我有以下文檔的集合:
{
"_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此答案的早期版本包含一個不正確的JavaScript函數。它現在已經修復。 – Philipp
我執行以下查詢:db.runCommand({的MapReduce: 「訂單」, 圖:功能圖(){ \t \t EMIT(this._id,這一點); }, 減少:減少功能(鍵,值){ \t返回值; }, 最終化:功能的Finalize(鍵,還原的){ \t回報減少; }, 查詢:{ 「$其中」:「返回this.items.some(函數(entry){entry.sku =='mmm'})「}, out:{merge:」map_reduce「} });,但它不起作用 – Phalguni
我得到了問題:查詢應該如下{$其中:「return this.items.some(function(entry){return entry.sku =='mmm'} )「},內函數缺少return語句 – Phalguni