私はこの質問を投稿する前に十分に調査しましたが、正確な解決策を見つけることができませんでした。 私はだから私は、フィールドをグラッドている文書のみを返すようにしたい以下の構造にMongoDBサブディレクトリのクエリ配列
stname: "SC",
dob : "1985",
education {[
{name : Lancaster,
year : 2013},
{name : Manchester,
year : 2001,
grad : 2004},
{name : Gambia,
year : 2001,
grad : 2011}
]}
を持っています。したがって、最後の2つの文書を返す必要があります。
Iは、以下に示すように、最初の文書はまた
{
"_id" : ObjectId("574dd5fcbda73af19e361a3f"),
"name" : "SC",
"education" : [
{
},
{
"grad" : "2004"
},
{
"grad" : "2011"
}
]
}
空である以下のクエリはあなたに似た結果が得られるだけで最初に一致したものを、次のクエリを試みたが、無駄に
db.applicants.find({"education" : { $elemMatch : {"grad" : {$exists : true}}}}, {"name":1, "education.grad" : 1}).pretty()
リターンそれは、これまでのgradフィールドが利用できない空のドキュメントです。
db.applicants.find({"education.grad" : { $exists : true}}, {"education.grad" : {$exists : true}, "education.grad" : 1, name : 1 , dob : 1}).pretty()
私はここに同様の質問に答えました:http://stackoverflow.com/questions/37510908/mongodb-search-by-datetime-type-not-working/37511250 – felipsmartins
@felipsmartinsを、私は、彼らはかなり異なっていると思います彼はフィールドに基づいて照会しようとしていました。 – fanbondi
ああ、そうだ。私は集計を使用しなければならないと思います。 – felipsmartins