假设这样的集合:
People
{
"name": "John Doe",
"email": "John Doe <john@doe.com>",
"stuff": "foo"
"morestuff": "bar"
},
{
"name": "Homer Simpson",
"email": "Homer Simpson <homer@simpson.tv>",
"stuff": "bar"
"morestuff": "foo"
},
{
"name": "Bart Simpson",
"email": "Bart Simpson <bart@simpson.tv>",
"stuff" : "foo"
"morestuff": "foo"
"evenmore": ["bar", "foo", "baz"]
}
找到所有字符串'foo'(确切地说,没有子字符串)的最佳方法是什么,哪有可能发生?我想要完成的是将所有出现的字符串'foo'更新为其他字符串,或者从集合中的文档中删除它。
我知道这可能看起来像是一个糟糕的数据库设计,我只想弄清楚我想做什么:)
答案 0 :(得分:1)
没有任何查询可以做到这一点。
对于一般情况,您必须遍历所有文档,并查看所有属性。
如果您可以限制可能的属性键,则可以构建类似
的查询name = 'foo' or email = 'foo' or stuff ='foo'
or morestuff = 'foo' or evenmore = 'foo'
如果后者是可能的,您也可以将其拆分为每个字段的单独查询,这是有道理的,因为您可以将它们转换为原子更新查询以将值更改为新值。