2013-04-18 97 views

回答

2
db.collection.find({name: {$elemMatch: {firstName: "Raj"}}}); 

欲知詳情請查看documentation$elemMatch

+0

非常感謝。 – Raj

+0

@Raj koi nahi bhai。這是我的榮幸 :) –

0

這是解決您的問題:

db.MyCollection.find( { name : { $elemMatch: { firstName : "valueGoesHere"} } }) 
2

@Sushant古普塔提供正確的答案,但是我會加一點更有味道說你也可以這樣做:

db.collection.find({'name.firstName': 'Raj'}, {'name.$':1}) 

至:matching firstName in the documents

這背後的關鍵是,MongoDB將像文件一樣處理單個多鍵發生,就像普通的扁平字段一樣,允許你像這樣查詢它們。

你看到的第二個參數實際上是投影(http://docs.mongodb.org/manual/reference/projection/elemMatch/),它告訴MongoDB的基本上投射出FIRST(需要使用聚合框架如果你想要更多)從主一個匹配name子文檔。

這是很好的注意,如果您添加兩個或更多的多鍵字段像這樣:

db.collection.find({'name.firstName': 'Raj', 'name.lastName': ''}, {'name.$':1}) 

然後,你將需要使用$elemMatch,但是,對於小單場查詢,這樣或者你故意的意思要搜索文檔中的所有多鍵字段以獲得兩個值,點符號(http://docs.mongodb.org/manual/reference/glossary/#term-dot-notation)效果良好。

相關問題