我有一個名為 Event 的集合,我在這里創建了一個帶有一些示例資料的 Mongo Playground:https ://mongoplayground.net/p/DNfmIMLIs2N
我正在嘗試查詢一個未知鍵的值與我的查詢值匹配的集合。我有2個實際例子。
示例 1:每個事件都有一個“pricingDict”,它是一個鍵控物件,鍵是貨幣,值是金額,例如。{美元:40.50,澳元:60.25}。無論貨幣如何,我都希望能夠找到所有具有價值大于 0 的定價字典的事件。
我希望做的是這樣的:
db.collection("Event").find({"pricingDict.*": { $gt: 0 }})
根據上面的示例資料,我希望這會回傳event2并且event3
示例 2:同一個事件類將有一個名為“eventManagers”的鍵控物件,鍵將是 userId,值將是一個物件,而物件又將有一個名為角色的鍵。我希望能夠找到他們擁有具有“管理員”角色的用戶的所有事件
我希望做的是這樣的:
db.collection("Event").find({"eventManagers.*.role": "Admin"})
根據上面的示例資料,我希望這會回傳event1并且event3
uj5u.com熱心網友回復:
用于$objectToArray將您的物件轉換為 kv 元組陣列。然后用于$filter對轉換后的陣列執行查詢。
查詢 1
db.collection.aggregate([
{
"$match": {
$expr: {
$ne: [
{
"$filter": {
"input": {
"$objectToArray": "$pricingDict"
},
"as": "pd",
"cond": {
$gt: [
"$$pd.v",
0
]
}
}
},
[]
]
}
}
}
])
這是Mongo游樂場供您參考。
db.collection.aggregate([
{
"$match": {
$expr: {
$ne: [
{
"$filter": {
"input": {
"$objectToArray": "$eventManagers"
},
"as": "em",
"cond": {
$eq: [
"$$em.v.role",
"Admin"
]
}
}
},
[]
]
}
}
}
])
這是Mongo游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/459364.html
上一篇:MongoDB|排序不適用于聚合
