3 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
如果用戶名Alex是唯一的,則可以使用以下代碼:
db.test.insert({username:"Alex", tags: ['C#', 'Java', 'C++'] });
db.test.aggregate(
{$match: {username : "Alex"}},
{$unwind: "$tags"},
{$project: {count:{$add:1}}},
{$group: {_id: null, number: {$sum: "$count" }}}
);
{ "result" : [ { "_id" : null, "number" : 3 } ], "ok" : 1 }

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為使用$ inc或通過(guò)計(jì)劃中的作業(yè)來(lái)計(jì)算每次保存(作為單獨(dú)的字段)時(shí)標(biāo)簽的數(shù)量可能更有效。
您也可以使用map / reduce進(jìn)行此操作(規(guī)范示例),但這似乎并不是您想要的。
我不確定是否可以完全按照您的要求進(jìn)行操作,但是您可以使用$ size查詢與特定大小匹配的所有文檔...
> db.collection.find({ tags : { $size: 3 }});
那將為您提供帶有3個(gè)標(biāo)簽的所有文檔...
- 3 回答
- 0 關(guān)注
- 2110 瀏覽
添加回答
舉報(bào)