大师 - 我陷入了一种情况,我无法弄清楚如何从以下集合“配偶”查询,其中嵌入了文件“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}})
但它失败了)
请指导我如何实现这个例子/样本?基于此将非常有用: - )
非常感谢!
答案 0 :(得分:2)
您有三种选择。
使用$where
修饰符:
db.task.find({$where: 'this.spouse.surname === this.surname'})
更新所有文件并添加特殊标志。之后,您将能够通过此标志查询文档。它比$where
快,但需要更改数据。
使用MapReduce。这很复杂,但它可以让你几乎做任何事情。