2016-11-30 3 views
0

私はのようなフィールドフィルタを書くことができますどのようにmongodb内の特定のフィールドと特定のフィールドを組み合せて埋め込みドキュメントを検索できますか?

{ a: 
    { aa: { aaa: 1, bbb: 2, ccc: 3 }, 
     bb: { aaa: 1, bbb: 2, ccc: 3 }, 
     cc: { aaa: 1, bbb: 2, ccc: 3 } 
    } 
} 

のような文書が埋め込まれている:MongoDBのドキュメントで

find({}, { "a.*.aaa": 1 }) 

* = aa, bb, cc 

にはヒントではありません(https://docs.mongodb.com/v3.2/tutorial/project-fields-from-query-results/を参照)

答えて

1

あなたなら、これは行うことができます値を照会しています。しかし、あなたがしようとしているのは鍵です。私たちはキーに完全一致を与えなければなりません。

$regexを使用して、キーではなく値で照合することができます。

私たちはPLSのが参照

db.collection.find({name:{$regex: /a.*.aa*/}}); 

と、このクエリの結果

{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" } 
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" } 
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" } 
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" } 
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" } 
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" } 
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" } 
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" } 

のように続いて$の正規表現を使用してクエリがあるコレクション

db.collection.find(); 
{ "_id" : ObjectId("583eed6c911c8e111fb99bf4"), "name" : "a.aa.aaa" } 
{ "_id" : ObjectId("583eed72911c8e111fb99bf5"), "name" : "a.bb.aaa" } 
{ "_id" : ObjectId("583eed77911c8e111fb99bf6"), "name" : "a.bb.bbb" } 
{ "_id" : ObjectId("583eed7b911c8e111fb99bf7"), "name" : "a.cc.bbb" } 
{ "_id" : ObjectId("583eed7f911c8e111fb99bf8"), "name" : "a.cc.aaa" } 
{ "_id" : ObjectId("583eed84911c8e111fb99bf9"), "name" : "a.cc.bbb" } 
{ "_id" : ObjectId("583eed88911c8e111fb99bfa"), "name" : "a.cc.ccc" } 
{ "_id" : ObjectId("583eed9a911c8e111fb99bfb"), "name" : "a.aa.ccc" } 
{ "_id" : ObjectId("583eeda4911c8e111fb99bfc"), "name" : "a.aa.bbb" } 
{ "_id" : ObjectId("583eedfd911c8e111fb99bfd"), "name" : "a.aa.abc" } 
{ "_id" : ObjectId("583eee03911c8e111fb99bfe"), "name" : "a.bb.abc" } 
{ "_id" : ObjectId("583eee06911c8e111fb99bff"), "name" : "a.cc.abc" } 

てみましょう:Mongodb - regex match of keys for subobjects

希望に役立つ!

関連する問題