假設(shè)我有一個(gè)包含多個(gè)文檔的集合,其結(jié)構(gòu)如下:{ _id: "id12345", objects: ["123","456", "789"]}現(xiàn)在我想創(chuàng)建一個(gè)查詢,在其中傳遞對(duì)象數(shù)組并獲取數(shù)組中每個(gè)元素在文檔中的出現(xiàn)次數(shù),如下所示:查詢輸入:["123","321"] 輸出:{ "123": 1, "321": 0}我只想通過一個(gè)查詢來執(zhí)行此操作,傳遞一個(gè)數(shù)組,我知道我可以一個(gè)接一個(gè)而不是一個(gè)數(shù)組輕松地做到這一點(diǎn),但這不是目的。
2 回答

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
一般來說,獲得這一點(diǎn)的查詢非常簡(jiǎn)單,因?yàn)椴唤ㄗh將值切換到數(shù)據(jù)層中的鍵,而是在表示層中切換更多。
所以這:
db.collection.aggregate([
{
$unwind: "$objects"
},
{
$group: {
_id: "$objects",
count: {
$sum: 1
}
}
}
])
會(huì)給你數(shù)字_id和一個(gè)count出現(xiàn)次數(shù)的字段。然后你可以在你的應(yīng)用程序中按摩它,讓它看起來像你想要的那樣。
添加回答
舉報(bào)
0/150
提交
取消