![](/img/trans.png)
[英]Can weak entity has more than one primary key if it has more than one strong entity?
[英]How to check if there is a key in collection that has more than one value?
我的收藏看起來像這樣:
{
{
_id: 'some value',
'product/productId': 'some value',
'product/title': 'some value',
'product/price': 'unknown'
},
{
_id: 'some value',
'product/productId': 'some value',
'product/title': 'some value',
'product/price': '12.57'
}
}
我的目標是找出是否有任何產品具有多個價格。 鍵“產品/價格”的值可以是“未知”或數字(例如“12.75”)。 有沒有辦法為此編寫聚合管道,或者我是否需要使用 map-reduce 算法? 我嘗試了這兩種選擇,但沒有找到解決方案。
如果我理解正確,您可以試試這個聚合管道:
首先, _id
字段是(或應該是)唯一的,所以我認為您指的是另一個字段,例如id
。
所以訣竅是按該id
分組並將所有價格放入一個數組中。 然后使用$match
過濾以僅獲取總價格大於 1 的文檔。
db.collection.aggregate([
{
"$group": {
"_id": "$id",
"price": {
"$push": "$product/price"
}
}
},
{
"$match": {
"$expr": {
"$gt": [ { "$size": "$price" }, 1 ]
}
}
}
])
這里的例子
添加到 Joe 的評論中,如果你想考慮相同的值,你必須使用$addToSet
這里的例子
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.