Welche Abfrage wird schneller? Len von ObjectId Liste mehr als 2.
db.house.find(
{ persons:
{ $elemMatch:
{ person_id:
{ $in:
[ ObjectId("570028671d41c8eaeb6c9ce8"),
ObjectId("570028681d41c8eaeb6c9e38")
]
}
}
}
})
db.house.find(
{ $or:
[{ persons:
{$elemMatch:
{person_id:ObjectId("570028671d41c8eaeb6c9ce8")}}
},
{persons:{$elemMatch:
{person_id:ObjectId("570028681d41c8eaeb6c9e38")}}
}]
})
sein kann, ich habe Indizes für: Personen, persons.person_id. Ich mache Anfragen von Django (Mongoengine), wenn es darauf ankommt. Es gibt ungefähr 100k Häuser und 2k Personen in meinem db für jetzt. Haus Dokumente sind wie folgt aus:
{
"_id" : ObjectId("570031aa1d41c8ed54393b19"),
"persons" : [
{
"person_id" : ObjectId("570028671d41c8eaeb6c9dff"),
"t" : "150 t"
},
{
"person_id" : ObjectId("5700312d1d41c8ed54393b05"),
"t" : "1 g"
},
{
"person_id" : ObjectId("5700312d1d41c8ed54393b06"),
"t" : "70 y"
}
]
}
Können Sie ein Beispieldokument zeigen? Außerdem können Sie immer 'var start = new Date() verwenden. GetTime(); doYouStuff; print (new Date(). getTime() - start) 'um den Unterschied zu messen oder ** [' .explain() '] (https://docs.mongodb.org/manual/reference/method/cursor.explain /) ** –
@MarkusWMahlberg Probe zum Beitrag hinzugefügt – vadimb