2012-12-19 70 views
2

大師 - 我陷入了一種情況,我無法弄清楚如何從以下集合中查詢「配偶」,它嵌入了文檔「姓氏」並檢查本文檔的「姓」平等:MongoDB - 如何在集合和嵌入式文檔中找到等於

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

我需要查詢:

具有相同姓氏的所有配偶的輸出數據(如果 夫妻一方的姓未指定,假定它與另一個的 名稱一致)

我想是這樣的:

db.task.find({ 「姓」:{ 「spouse.surname」:1}})

但失敗了)

請引導我如何實現這個任何示例/示例?基於此將是非常有益的:-)

非常感謝!

回答

2

您有三種選擇。

  1. 使用$where修改:

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

  2. 更新所有的文件,並添加特殊標誌。之後,您將能夠通過此標誌查詢文檔。它快於$where,但需要更改您的數據。使用MapReduce。這很複雜,但它可以讓你做任何事情。

+0

非常感謝!有用!!! – user1915977

相關問題