私のコレクションはこんな感じです
{
_id :"",
name:[
{
firstName:"",
lastName:"",
}
]
}
ドキュメントで一致する firstName を見つける必要があります。クエリでこれを達成する方法は? 私はmongodbが初めてです。
@Sushant Guptaは正しい答えを提供しましたが、次のこともできると言って、もう少しフレーバーを追加します。
db.collection.find({'name.firstName': 'Raj'}, {'name.$':1})
宛先: matching firstName in the documents
。
この背後にある鍵は、MongoDB がドキュメント内の単一の複数キーの出現を通常のフラット フィールドのように扱い、このようにクエリを実行できるようにすることです。
表示される 2 番目のパラメーターは、実際にはプロジェクション ( http://docs.mongodb.org/manual/reference/projection/elemMatch/ ) であり、基本的に FIRST を投影するように MongoDB に指示します (さらに必要な場合は、集計フレームワークを使用する必要があります)。 ) メインのサブドキュメントに一致するname
サブドキュメント。
次のように 2 つ以上のマルチキー フィールドを追加する場合は注意してください。
db.collection.find({'name.firstName': 'Raj', 'name.lastName': ''}, {'name.$':1})
$elemMatch
ただし、このような小さな単一フィールド クエリや、ドキュメント内のすべてのマルチキー フィールドを 2 つの値で意図的に検索する場合、ドット表記 ( http://docs.mongodb.org/manual/reference )を使用する必要があります ( http://docs.mongodb.org/manual/reference /glossary/#term-dot-notation ) はうまく機能します。
db.collection.find({name: {$elemMatch: {firstName: "Raj"}}});
詳細については、ドキュメントを参照してください。$elemMatch
これがあなたの問題を解決するものです:
db.MyCollection.find( { name : { $elemMatch: { firstName : "valueGoesHere"} } } )