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 集合中只有一个文档:

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

有谁知道为什么这在 2.2.0 中有效,但在 2.0.7 中无效?

根据这个:

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

v1.4+ 支持 elemMatch

谢谢,盖伦

4

1 回答 1

1

如果您正在寻找一种适用于两个版本的方法,则无需在$elemMatch此处使用,因为您只与单个字段进行比较,因此您可以使用更简单的查询。试试这个:

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