1

我正在使用此查询来查找位于子文档中的数组中的匹配值。

db.providers.find({assignments 
    : {assignment 
        : {$elemMatch
        : {as_to 
            : 'Present'}}}}, {_id : 1})

文档的结构如下所示:

    "dev_active_interviews" : 0,
    "assignments" : {
        "assignment" : [ 
            {
                "as_rate" : "$3.89",
                "as_from" : "05/2011",
                "as_to"   : "Present"
            },
            {
                "as_rate" : "$2.22",
                "as_from" : "11/2010",
                "as_to"   : "Past"
            }
         ]
      }

它应该可以工作,因为首先我选择了子文档,然后我用 $elemMatch 遍历了数组,但没有显示任何内容。

4

1 回答 1

4
db.providers.find({'assignments.assignment' : {$elemMatch : {as_to : 'Present'}}},{_id : 1}).pretty()

尝试从下面的示例中了解差异

test:Mongo > db.test.insert({ a : { b : 1, c : 1 }})
test:Mongo > db.test.find({ a : { b : 1 }})         // no result
test:Mongo > db.test.find({ 'a.b' : 1 })
{ "_id" : ObjectId("51b2cb7de501a334ea6d4a0c"), "a" : { "b" : 1, "c" : 1 } }
test:Mongo > db.test.find({ a : { b : 1, c : 1 }})
{ "_id" : ObjectId("51b2cb7de501a334ea6d4a0c"), "a" : { "b" : 1, "c" : 1 } }
于 2013-06-08T06:14:55.277 回答