我正在挖掘MongoDB oplog,我想查看符合以下条件的所有操作:
"o" : {
"$set" : {
"skus.0.stock" : 1
}
}
有问题的操作会更新与此类似的对象:
{
skus: [
{
stock: Number
},
{
stock: Number
},
]
}
上面的oplog操作是$set
skus数组上对象的库存级别。
问题是当我执行.find({"o.$set.skus.0.stock": {$exists: true}})
时我什么也得不回来。 mongo shell期待一个如下所示的对象:
"o" : {
"$set" : {
"skus" : {
"0": {
stock" : 1
}
}
}
}
我看了一下this question,但最重要的答案基本上只是将句点替换为类似的unicode字符。在这种情况下,oplog已经在字段名称中插入了实际的句点。
括号表示法会在没有引号的情况下引发错误语法错误,并且不会返回任何带引号的内容(它只是不起作用。)