如何通过Mongo在同一个字段中使用“equals”和$ in查询?

时间:2013-01-07 22:51:50

标签: javascript mongodb

基本上,最终目标是为我的所有数据库查询提供默认范围。这意味着将所有查询限制为一组对象ID。我的问题是,如何通过ID查询并确保查询仅限于我的对象ID列表?

我想做这样的事情:

db.posts.findOne({_id: ObjectId("50eb4a874947fb00e3cc0612")})
        .where({_id: { $in: [ObjectId("50eb4a874947fb00e3cc0610"),ObjectId("50eb4a874947fb00e3cc0611")] }});

正如您所看到的,查询应该不返回任何结果,因为查询的ID不在$ in对象ID数组中。

顺便说一下,上面的查询只是给我一个错误db.posts.findOne({_id: ObjectId("50eb4a874947fb00e3cc0612")}).where is not a function (shell):1

1 个答案:

答案 0 :(得分:1)

这听起来很奇怪,但你可以试试$andhttp://docs.mongodb.org/manual/reference/operators/#_S_and)来结合两个条款:

db.col.find({
    $and:[
        {_id: ObjectId("50eb4a874947fb00e3cc0612")},
        {_id: {
            $in: [
                ObjectId("50eb4a874947fb00e3cc0610"),
                ObjectId("50eb4a874947fb00e3cc0611")
            ]
         }}
     ]
 });

这是我相信的一种做法。