MongoDb:将两个查找操作组合在一起

时间:2017-04-02 09:02:16

标签: mongodb

当我搜索包含标题'Apple'的文档时:

  

db.getCollection('items')。find({title:{$ regex:'Apple'}})

标题为“Apple”的文件按预期返回

当我搜索priceA小于priceB的文件时:

  

db.getCollection('items')。find({“$ where”:“this.priceA< this.priceB”})

priceA小于priceB的文件按预期退回。

然而,当我尝试这样做时:

  

db.getCollection('items')。find({title:{$ regex:'Apple'}},   {“$ where”:“this.priceA< this.priceB”})

只返回_id字段,而且我的集合中的所有文档都是真的,上面的两个过滤器根本没有应用:

enter image description here

如何应用这两种过滤器?

1 个答案:

答案 0 :(得分:2)

您的查询错误尝试此操作。您在投影方法check this out for more details

中传递了第二个错误的条件

Mongodb find()方法需要3个参数

<强>条件{title: {$regex: 'Apple'},"$where":"this.priceA < this.priceB"}

<强>投影

默认情况下,您不会在投影中指定任何内容,它会返回整个文档,但如果您只想要特定的详细信息,则可以将其传递给 {name:1,email:1}

选项: 示例示例为{sort:1,limit:1}

  db.getCollection('items').find({title: {$regex: 'Apple'},"$where":"this.priceA < this.priceB"}, {})