[英]MongoDB Query to array
我有一個收集命令,集合內有屬性Array,我想將attributes.value上的記錄分組,其中attributes.name是“ sugery”
db.orders.find({},{"attributes":1}).sort({_id:-1}).limit(3);
{
"_id" : ObjectId("599cfdb0f6ec8d00015b0880"),
"attributes" : [
{
"id" : ObjectId("5979a220ad86210001997d5a"),
"name" : "patient",
"status" : NumberInt(1),
"sysDefined" : NumberInt(1),
"value" : "Lincon Burrows"
},
{
"id" : ObjectId("5979a229ad86210001997d5c"),
"name" : "notes",
"status" : NumberInt(1),
"sysDefined" : NumberInt(1),
"value" : ""
},
{
"id" : ObjectId("5979a230ad86210001997d5e"),
"name" : "surgeon",
"status" : NumberInt(1),
"sysDefined" : NumberInt(1),
"value" : "Dr. Williams"
},
{
"id" : ObjectId("5979a238ad86210001997d60"),
"name" : "surgery",
"status" : NumberInt(1),
"sysDefined" : NumberInt(1),
"value" : "Heart Surgery"
}
]
}
{
"_id" : ObjectId("599c357a9ec26c00017892a6"),
"attributes" : [
{
"value" : "new patient",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "patient",
"id" : ObjectId("5979a220ad86210001997d5a")
},
{
"value" : "",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "notes",
"id" : ObjectId("5979a229ad86210001997d5c")
},
{
"value" : "http://localhost:4200/#new surgeon",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "surgeon",
"id" : ObjectId("5979a230ad86210001997d5e")
},
{
"value" : "new surgery",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "surgery",
"id" : ObjectId("5979a238ad86210001997d60")
}
]
}
{
"_id" : ObjectId("599c2069b2afd900019ea142"),
"attributes" : [
{
"value" : "Mellisa Darwin",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "patient",
"id" : ObjectId("5979a220ad86210001997d5a")
},
{
"value" : "",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "notes",
"id" : ObjectId("5979a229ad86210001997d5c")
},
{
"value" : "Dr. Josefina P. Robles",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "surgeon",
"id" : ObjectId("5979a230ad86210001997d5e")
},
{
"value" : "Spine Surgery",
"sysDefined" : NumberInt(1),
"status" : NumberInt(1),
"name" : "surgery",
"id" : ObjectId("5979a238ad86210001997d60")
}
]
}
我想要輸出像
[
{
"_id":"Heart Surgery",
"count":1
},
{
"_id":"new surgery",
"count":1
},
{
"_id":"Spine Surgery",
"count":1
}
]
請參閱mongodb組文檔。 db.collection.group()
以下是db.collection.group()方法的示例。 這些示例假定訂單集合包含以下原型的文檔:
{
_id: ObjectId("5085a95c8fada716c89d0021"),
ord_dt: ISODate("2012-07-01T04:00:00Z"),
ship_dt: ISODate("2012-07-02T04:00:00Z"),
item: {
sku: "abc123",
price: 1.99,
uom: "pcs",
qty: 25
}
}
按兩個字段分組
以下示例按ord_dt和item.sku字段對ord_dt大於01/01/2012的那些文檔進行分組 :
db.runCommand({
group:
{
ns: 'orders',
key: { ord_dt: 1, 'item.sku': 1 },
cond: { ord_dt: { $gt: new Date( '01/01/2012' ) } },
$reduce: function ( curr, result ) { },
initial: { }
}
})
嘗試這個 :
orders.aggregate({"attributes":1}, {$unwind:"$attributes"},{$match:{"attributes.name":"surgery"}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.