如果数组字段包含值,如何找到对象(或多个对象)

时间:2016-03-04 07:28:03

标签: node.js mongodb mongoose

正如您在标题中看到的那样,如果项目的数组类型字段包含Mongoose的指定值,我想查询项目。


我发现mongo DB / Mongoose提供了' $ in' operator用数组对象查找值。

但是' $ in'运算符仅在相反的情况下有用(如果值的字段在数组中,则查找值)。


以下是我写的一些模型代码。

// scheme/item.js
var mongoose = require('mongoose');
var model = new mongoose.Schema({

    item_id : Number,

    name : String,
    description : String,

    assigned : [ Number ]
});

module.exports = mongoose.model('item', model);

我想要做的是,如果设置了用户ID,找到item.assigned包含用户ID的所有项目。

3 个答案:

答案 0 :(得分:0)

要获取assigned非空的所有记录,您需要使用$ne子句:

item.find({assigned: {$ne: null}});

答案 1 :(得分:0)

item.find({'$and' : [{item_id : {$eq: req.session.user_id}}, {'assigned ' : {'$in' : [req.session.user_id]}}]})

我认为您可以使用$in,请阅读链接:https://docs.mongodb.org/manual/reference/operator/query/in/#op._S_in

答案 2 :(得分:0)

通过@chridam的评论,我发现'Item.find({assigned:user_id})'正好按照我的意图行事。