1

$elemMatch 操作に関しては、2.0.7 と 2.2.0 の間にいくつかの違いがあります。

2.2.0 では、次のクエリで結果が返されます。

db.testColl.find( { "metadata" : {$elemMatch : {$gt : {age:23}, $lt : {age:99}} }});

2.0.7 では、結果が返されません。

テスト目的で、testColl コレクションにはドキュメントが 1 つだけあります。

{
    "_id" : ObjectId("4fb2974cbedb4a626109b002"),
    "metadata" : [
        {
            "age" : 59
        },
        {
            "gender" : "FEMALE"
        }
    ]
}

これが 2.2.0 では機能するのに 2.0.7 では機能しない理由を知っている人はいますか?

これによれば:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24elemMatch

elemMatch は v1.4+ でサポートされています

ありがとう、ガレン

4

1 に答える 1

1

両方のバージョンで機能する方法を探している場合は、$elemMatchここで使用する必要はありません。単純なクエリを使用できるように単一のフィールドに対してのみ比較しているためです。代わりにこれを試してください:

db.testColl.find({ 'metadata.age': { $gt: 23, $lt: 99 }});
于 2012-11-08T01:30:13.740 に答える