我有一个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"
}
答案 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>