如何在mongoDB集合中找到独立于字段名称的值?

时间:2010-09-27 21:56:49

标签: mongodb

假设这样的集合:

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'更新为其他字符串,或者从集合中的文档中删除它。

我知道这可能看起来像是一个糟糕的数据库设计,我只想弄清楚我想做什么:)

1 个答案:

答案 0 :(得分:1)

没有任何查询可以做到这一点。

对于一般情况,您必须遍历所有文档,并查看所有属性。

如果您可以限制可能的属性键,则可以构建类似

的查询
name = 'foo' or email = 'foo' or stuff ='foo'
  or morestuff = 'foo' or evenmore = 'foo'

如果后者是可能的,您也可以将其拆分为每个字段的单独查询,这是有道理的,因为您可以将它们转换为原子更新查询以将值更改为新值。