假設我有以下條目:
{
name: 'Bob',
a: {
02910143: { val: 10 },
101B70BB: { val: 20 },
7A6C86F1: { val: 10 },
}
}
請注意,物件的鍵a是散列,所以我不知道它們的名稱用于我的查詢。我正在嘗試撰寫將洗掉所有val為 10 的條目的查詢。我有以下內容,但我似乎無法弄清楚如何遍歷所有嵌套物件:
db.collection('myCollection').deleteMany({ 'a.$.val': 10 })
我如何使它能夠檢查任何鍵值條目a?
uj5u.com熱心網友回復:
您可以先使用$arrayToObject轉換a為 kv 元組的陣列。然后使用$filter洗掉不等于10的值。最后使用轉換回原始形式$arrayToObject
db.collection.aggregate([
{
"$addFields": {
"a": {
"$objectToArray": "$a"
}
}
},
{
"$addFields": {
"a": {
"$filter": {
"input": "$a",
"as": "a",
"cond": {
$ne: [
"$$a.v.val",
10
]
}
}
}
}
},
{
"$addFields": {
"a": {
"$arrayToObject": "$a"
}
}
}
])
這是Mongo游樂場供您參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462450.html
