使用$ elemMatch

时间:2016-06-14 04:25:46

标签: mongodb mongodb-query

我有一个invoice collection,我希望在其中找到包含指定图书ID的文档。

  db.invoice.find({"sold": {$elemMatch: {"book":{$elemMatch:{"_id":"574e68e5ac9fbac82489b689"}}}}})

我尝试了这个,但它没有工作

{
    "_id" : ObjectId("575e9bf5576533313ac9d993"),
    "sold" : [
        {
            "book" : {
                "_id" : "574e68e5ac9fbac82489b689",
                "price" : 100,
            },
            "quantity" : 10,
            "total_price" : 1000
        }
    ],
    "date" : "13-06-2016"
}

2 个答案:

答案 0 :(得分:3)

您在此处不需要$elemMatch查询运算符,因为您只指定了一个查询条件。

db.invoice.find( { 'sold.book._id': '574e68e5ac9fbac82489b689' } )

文档中提到了这一点:

  

如果在$ elemMatch表达式中只指定一个条件,则不需要使用$ elemMatch

答案 1 :(得分:0)

https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#op._S_elemMatch

  

$ elemMatch 运算符匹配包含数组字段的文档,其中至少有一个元素符合所有指定的查询条件。

<a href="#" class="apparat">
<div class="img-box">
<img src="http://storage2.static.itmages.ru/i/16/0614/h_1465880975_7122477_d666884232.png" alt="Apparat 1" class="catalog_apparat">
</div>
<div class="apparat_description">Gynecology</div>
</a>
<a href="#" class="apparat">
<div class="img-box">
<img src="http://storage2.static.itmages.ru/i/16/0614/h_1465880975_7122477_d666884232.png" alt="Apparat 1" class="catalog_apparat">
</div>
<div class="apparat_description">Gynecology</div>
</a>