[MONGODB] ID를 일치하지 않습니다 총 $ 일치 몽구스
MONGODBID를 일치하지 않습니다 총 $ 일치 몽구스
나는 가능한 경우 할인 뺀 후 IDS (56e641d4864e5b780bb992c6 및 56e65504a323ee0812e511f2) 및 쇼 가격으로 제품을 게재하려는.
나는 총을 사용하는 최종 가격을 계산 할 수 있지만, 모음에있는 모든 문서를, 어떻게하려면이 수익에만 일치 ID를 반환
"_id" : ObjectId("56e641d4864e5b780bb992c6"),
"title" : "Keyboard",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
"_id" : ObjectId("56e65504a323ee0812e511f2"),
"title" : "Mouse",
"discount" : NumberInt(0),
"price" : NumberInt(1000)
"_id" : ObjectId("56d90714a48d2eb40cc601a5"),
"title" : "Speaker",
"discount" : NumberInt(10),
"price" : NumberInt(1000)
이 내 쿼리입니다
productModel.aggregate([
{
$project: {
title : 1,
price: {
$cond: {
if: {$gt: ["$discount", 0]}, then: {$subtract: ["$price", {$divide: [{$multiply: ["$price", "$discount"]}, 100]}]}, else: "$price"
}
}
}
}
], function(err, docs){
if (err){
console.log(err)
}else{
console.log(docs)
}
})
내가 쿼리에서이 $를 추가 할 경우, 그것은 하늘의 배열을 돌려줍니다
productModel.aggregate([
{
$match: {_id: {$in: ids}}
},
{
$project: {
title : 1,
price: {
$cond: {
if: {$gt: ["$discount", 0]}, then: {$subtract: ["$price", {$divide: [{$multiply: ["$price", "$discount"]}, 100]}]}, else: "$price"
}
}
}
}
], function(err, docs){
if (err){
console.log(err)
}else{
console.log(docs)
}
})
해결법
-
==============================
1.귀하의 IDS 변수는 "문자열", 그리고 ObjectId가 값으로 구성됩니다.
귀하의 IDS 변수는 "문자열", 그리고 ObjectId가 값으로 구성됩니다.
일반 쿼리에서 올바른 타입으로 ObjectId가에 대한 "autocasts"문자열 값을 몽구스,하지만 문제 # 1399에 설명처럼이, 집계 파이프 라인에서 발생하지 않습니다.
대신 수동으로 입력 할 올바른 캐스팅을 수행해야합니다 :
ids = ids.map(function(el) { return mongoose.Types.ObjectId(el) })
그런 다음 당신은 당신의 파이프 라인 단계에서 사용할 수 있습니다 :
{ "$match": { "_id": { "$in": ids } } }
통합 파이프 라인은 "일반적으로"문서 구조를 변경, 따라서 몽구스은 "스키마"주어진 파이프 라인 단계에서 문서에 적용한다는 가정을하지 않습니다 때문에 이유입니다.
그것은 논쟁의 여지가있다 그것이 실제로 문서가 변경되지 않기 때문에,이 작업을 수행해야 $ 일치하는 단계는 "첫 번째"파이프 라인 단계. 그런 일이 어떻게하지만 지금이 없습니다.
아마도 "문자열"또는 적어도하지 올바른 BSON 형 필요성 될 수있는 값은 수동으로 일치하기 위해 주조한다.
from https://stackoverflow.com/questions/36193289/moongoose-aggregate-match-does-not-match-ids by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의에서 페이지 매김을 구현 (0) | 2019.11.30 |
---|---|
[MONGODB] MongoDB를 어떻게 하나의 명령으로 여러 문서를 업데이트? (0) | 2019.11.30 |
[MONGODB] 어떻게 MongoDB의 문서에서 기준과 일치하는 배열 요소를 업데이트하는 방법은 무엇입니까? (0) | 2019.11.30 |
[MONGODB] 정지 몽구스 하위 문서 배열 항목에 대한 _id 속성을 생성에서 (0) | 2019.11.30 |
[MONGODB] MongoDB의 몽구스의 E11000 중복 키 에러 인덱스 (0) | 2019.11.30 |