3 回答

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