正如您在标题中看到的那样,如果项目的数组类型字段包含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的所有项目。
答案 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})'正好按照我的意图行事。