javascript - Mongoose:按数组字段内的值查找文档
问题描述
我有一个看起来像这样的聊天模式:
var chatSchema = new mongoose.Schema({
users: [{
type: mongoose.Schema.Types.ObjectId,
required: true
}]
});
它包含一组用户 ID。现在我想找到一个包含两个用户 ID 数组的聊天文档。
一开始我尝试这样做:
Chat.findOne({ users: { $in: [req.user_id, receiver._id] }})
.then(chat => { })
但似乎每次它给我的聊天至少包含我在查询中提到的一个 ID。
所以我试图把它改成这样,但没有运气:
Chat.findOne()
.where({ users: { $in: [req.user_id] }})
.where({ users: { $in: [receiver._id] }})
.then(chat => { })
我需要在 users 数组中找到包含两个用户 ID 的聊天,否则我希望得到一个空值。
我怎样才能实现这个目标?
谢谢!
解决方案
这就是工作方式$in
- 当至少一个值匹配时返回文档。你应该使用$all代替:
Chat.findOne({ users: { $all: [req.user_id, receiver._id] }})
推荐阅读
- mysql - MySQL monthly sums
- python - 为什么我的 Python 日志记录设置不起作用?
- python - Python中的键盘模块-停止我的无限while循环
- python - Gmail API socket.timeout:读取操作超时
- python - 如何纠正 MultiIndex.data 弃用
- vue.js - 更改子组件内 ref 的值
- javascript - 在 JavaScript 中乘法/克隆多次对象和数组
- r - 尽管在 R 中使用了磁盘帧,但仍然无法分配大小向量
- python - Python使用公式将字符串列表转换为整数
- php - PHP Ajax 实时搜索只返回一个结果