2016-11-30 3 views

Antwort

1

Dies, wenn Sie getan werden kann, suchen nach Wert. Aber was Sie versuchen, ist auf den Schlüssel. Wir müssen den Schlüssel exakt zuordnen.

Wir können $regex verwenden, um auf Wert und nicht auf den Schlüssel abzustimmen.

Lassen Sie uns eine Sammlung haben

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" } 

Dann wird die Abfrage $ regex ist wie

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

und das Ergebnis dieser Abfrage

{ "_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" } 

Pls beziehen: Mongodb - regex match of keys for subobjects

Hoffe es hilft!

Verwandte Themen