2

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

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

我需要查询:

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

我试过这样的事情:

db.task.find({“姓氏”:{“配偶姓氏”:1}})

但它失败了)

请指导我如何实现任何示例/示例?基于此将非常有帮助:-)

非常感谢!

4

1 回答 1

2

你有三个选择。

  1. 使用$where修饰符:

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

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

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

于 2012-12-19T14:13:46.557 回答