代码之家  ›  专栏  ›  技术社区  ›  xlttj

如何独立于字段名在MongoDB集合中查找值?

  •  0
  • xlttj  · 技术社区  · 15 年前

    假设集合如下:

    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 回复  |  直到 14 年前
        1
  •  1
  •   Thilo    15 年前

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

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

    如果可以限制可能的属性键,则可以像

    name = 'foo' or email = 'foo' or stuff ='foo'
      or morestuff = 'foo' or evenmore = 'foo'
    

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