MongoDB通配符是查询的关键

时间:2011-05-30 19:04:20

标签: mongodb mongodb-query wildcard

是否可以在查询中对密钥进行通配符?例如,鉴于以下记录,我想做一个.find({'a.*': 4}) 这在https://jira.mongodb.org/browse/SERVER-267进行了讨论,但看起来还没有解决。

{
  'a': {
    'b': [1, 2],
    'c': [3, 4]
  }
}

1 个答案:

答案 0 :(得分:11)

如所述,这是不可能的。您链接到的服务器问题仍然在“我们不确定的问题”下。

MongoDB有一些关于数组使用的智能,我认为这是围绕这种功能的复杂性的一部分。

进行以下查询db.foo.find({ 'a.b' : 4 } )。此查询将与以下文档匹配。

{ a: { b: 4 } }
{ a: [ { b: 4 } ] }

那么“通配符”在这里做什么? db.foo.find( { a.* : 4 } )是否与第一份文件相符?第二个怎么样?

而且,这在语义上意味着什么?正如您所描述的那样,查询实际上是“查找文档中任何字段的值为4”的文档。这有点不寻常。

您是否尝试实现特定的语义?也许文档结构的更改将为您提供所需的查询。