mongo用戶的一個小謎。MongoDB:我如何檢查所有數組條目在整個集合中是唯一的?
我的文檔集合像
{
"_id" : ObjectId("19628f4f0545a733185b672f"),
"name" : "hello",
"items" : [
{
"itemNumber" : 12512,
"value" : "let"
},
{
"itemNumber" : 2546,
"value" : "put"
}
]
}
我需要確保每一個項目的itemNumber
是全局唯一的收藏。
在SQL數據庫中,我會對項目一個單獨的表和檢查查詢,如果號碼是唯一會像
select count(1)
from (
select itemNumber, count(itemNumber) as cnt
from items
group by itemNumber) sel
where cnt>1;
所得0
將意味着所有itemNumber
s爲唯一的。 (也許有更好的辦法,使在SQL中檢查)
隨着MongoDB的唯一的解決辦法,我能來是
一)使用forEach
提取的所有項目,需要單獨收集
b)作出一個簡單的聚集
db.items.aggregate(
{ $group : { _id : '$itemNumber', count : {$sum : 1} } },
{ $out : "cnt" }
)
C)db.cnt.find({count: {$gt: 1}}).count()
是否有任何一個查詢的方式來做到這一點?
性能通知:收集約3M文件,每個2,2KB。我注意到包含$group
的聚合在這個集合上永遠運行。
這裏描述的可能的解決方案:https://stackoverflow.com/questions/7102918/in-mongodb-how-do-i-check-if-all-the -documents-are-unique-for-a-value – mgyongyosi