MongoDB elemMatch-Filialdokumente

Ich habe folgende Datenstruktur

{
    "_id" : ObjectId("523331359245b5a07b903ccc"),
    "a" : "a",
    "b" : [
        {
            "c" : {
                "_id" : ObjectId("5232b5090364678515db9a82"),
                "d" : "d1"
            }
        },
        {
            "c" : {
                "_id" : ObjectId("5232b5090364678515db9a83"),
                "d" : "d2"
            }
        }
    ]
}

Bei den folgenden Abfragen kehrt mongo zurück

> db.test.find({b : {$elemMatch : {'c.d': 'd1'}}}).count();
1
> db.test.find({b : {$elemMatch : {c: {d: 'd1'}}}}).count();
0

Leider für die folgenden Aussagen

B b = new B();
C c = new C();
b.c = c;
b.c.d = "d1";
createQuery().field("b").hasThisElement(b).asList();

Morphia generiert db.test.find ({b: {$ elemMatch: {c: {d: 'd1'}}}), das eine Übereinstimmung von 0 zurückgibt.

Ist das ein Mongo-Bug oder ein Morphia-Bug? Gibt es eine Problemumgehung für mich, um das übereinstimmende Dokument zu erhalten?

Bitte beachten Sie, dass ich in der Praxis 2 Bedingungen für elemMatch habe, daher muss ich "elemMatch" verwenden, nicht "Punktnotation". Das obige ist nur, um meinen Fall für die einfache Anzeige zu vereinfachen.Ich verwende Mongodb 2.4.6 und Morphia 1.2.3

Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage