MongoDB - 如何在集合和嵌入文档中查找equals

时间:2012-12-19 14:01:52

标签: mongodb

大师 - 我陷入了一种情况,我无法弄清楚如何从以下集合“配偶”查询,其中嵌入了文件“surname”并检查与本文档“surname”的相等性:

{
  "_id" : ObjectId("50bd2bb4fcfc6066b7ef090d"),
  "name" : "Gwendolyn",
  "surname" : "Davis",
  "birthyear" : 1978,
  "spouse" : {
    "name" : "Dennis",
    "surname" : "Evans",
    "birthyear" : 1969
  },  

我需要查询:

  

具有相同姓氏的所有配偶的输出数据(如果姓氏为姓氏)   其中一个配偶未指定,假设它与之一致   另一个名字)

我试过这样的事情:

  

db.task.find({“surname”:{“spouse.surname”:1}})

但它失败了)

请指导我如何实现这个例子/样本?基于此将非常有用: - )

非常感谢!

1 个答案:

答案 0 :(得分:2)

您有三种选择。

  1. 使用$where修饰符:

    db.task.find({$where: 'this.spouse.surname === this.surname'})

  2. 更新所有文件并添加特殊标志。之后,您将能够通过此标志查询文档。它比$where快,但需要更改数据。

  3. 使用MapReduce。这很复杂,但它可以让你几乎做任何事情。