我的API REST中有一个端点,该端点将检查我从req.body
({users: ['id1','id2']}
)收到的id对象是否在我的数据库中。
我有这个:
router.post(
'/checkchat',
isLoggedIn(),
async (req, res, next) => {
const { users } = req.body;
const chats = await Chat.find({
$and: [
{
users: {
$elemMatch: { $eq: users[0] }
}
},
{
users: {
$elemMatch: { $eq: users[1] }
}
}
]
});
if (chats.length > 0) {
res.status(205).json(chats);
} else {
const chat = await Chat.create({
users: users.users,
messages: []
});
await User.findByIdAndUpdate(users[0], { $push: { chats: chat } });
await User.findByIdAndUpdate(users[1], { $push: { chats: chat } });
res.status(200).json(chat);
}
}
);
我在猫鼬文档$elemMatch
中找到了它,但是它不起作用。总是在等待Chat.find中找到0个项目……这意味着条件($ and:...)不起作用
我需要检查id对象是否在db的users数组中...
对不起,我的英语不好:(
答案 0 :(得分:1)
尝试$in
可以解决问题:
User.find({userId: { $in : ['id1','id2']} })
$ in运算符选择字段值等于指定数组中任何值的文档。指定$ in表达式