나는 다음과 같은 문서의 컬렉션이 있습니다쿼리 하위 배열 곳
{
"_id" : ObjectId("51f1fd2b8188d3117c6da352"),
"cust_id" : "abc1234",
"ord_date" : ISODate("2012-10-03T18:30:00Z"),
"status" : "A",
"price" : 27,
"items" : [{
"sku" : "mmm",
"qty" : 5,
"price" : 2.5
}, {
"sku" : "nnn",
"qty" : 5,
"price" : 2.5
}]
}
내가 "항목"의 분야에서 "여기서 $"를 사용하려면, 그래서 뭔가 다음과 같습니다 :
을{$where:"this.items.sku==mmm"}
어떻게하면됩니까? 필드가 배열 유형이 아닌 경우 작동합니다.
@ Phalguni이 답변의 이전 버전은 잘못된 자바 스크립트 기능을 포함하고 있습니다. 이제 수정되었습니다. (this._id이) 기능지도() { \t \t 개의 발광, 을}, 가 감소 : db.runCommand ({맵리 듀스 : "주문", 지도 – Philipp
나는 다음 쿼리를 실행 기능 (키 감소, 값) { \t 리턴 값; } 마무리 : 함수의 Finalize (키 감소) {창 저감 \t; } 쿼리 { "$"는 "(this.items.some를 반환 함수 (항목) {entry.sku == 'mmm'}) "}, out : {merge :"map_reduce "} });)하지만 작동하지 않습니다 – Phalguni
문제가 생겼습니다 : 쿼리는 다음과 같아야합니다. $ 여기서 "return this.items.some (function entry) {return entry.sku == 'mmm'}) "}, 내부 함수가 return 문이 없음. – Phalguni