我的收藏是這樣如何在mongodb中獲取數組中的匹配文檔?
{
_id :"",
name:[
{
firstName:"",
lastName:"",
}
]
}
我需要找到的文件匹配您的名字。 如何在查詢中實現這一點? 我是mongodb的新手。
我的收藏是這樣如何在mongodb中獲取數組中的匹配文檔?
{
_id :"",
name:[
{
firstName:"",
lastName:"",
}
]
}
我需要找到的文件匹配您的名字。 如何在查詢中實現這一點? 我是mongodb的新手。
db.collection.find({name: {$elemMatch: {firstName: "Raj"}}});
欲知詳情請查看documentation爲$elemMatch
這是解決您的問題:
db.MyCollection.find( { name : { $elemMatch: { firstName : "valueGoesHere"} } })
@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)效果良好。
非常感謝。 – Raj
@Raj koi nahi bhai。這是我的榮幸 :) –