Node.js 如果数组字段包含值,如何查找对象
正如您在标题中看到的,我想查询项的数组类型字段是否包含Mongoose指定的值Node.js 如果数组字段包含值,如何查找对象,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,正如您在标题中看到的,我想查询项的数组类型字段是否包含Mongoose指定的值 我发现mongodb/Mongoose提供了“$in”操作符来查找数组对象的值 但“$in”运算符仅在相反的情况下有用(如果值的字段在数组中,则用于查找值) 下面是我为模型编写的一些代码 // scheme/item.js var mongoose = require('mongoose'); var model = new mongoose.Schema({ item_id : Number,
我发现mongodb/Mongoose提供了“$in”操作符来查找数组对象的值 但“$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的所有项目。要获取所有已分配
且不为空的记录,您需要使用以下子句:
我想你可以在
中使用$,请阅读链接:和@chridam的评论,我找到了'Item.find({assigned:user_id})'只要做我想做的。很抱歉,我想找到包含值的数组字段的记录,但只是找到所有没有空字段的记录。这意味着该项的字段不应为null且“包含值”。是的,很抱歉,我不理解这个问题。在您的评论之后,我编辑了一些用于模型和解释的数据。实际上,Item.id与这个问题无关(因此我编辑为“Item_id”)。事实上,当用户id带有一些对象(例如req.session.user_id)时,我想使用这个值进行查询。很抱歉输入错误:(您是否尝试了项。查找({assigned:userId})
?@chridam我想您给了我一个正确的答案..真是个救命恩人啊!!
item.find({assigned: {$ne: null}});
item.find({'$and' : [{item_id : {$eq: req.session.user_id}}, {'assigned ' : {'$in' : [req.session.user_id]}}]})