mongodb - 将 $nin 运算符与 mongoDB 一起使用的正确方法是什么
问题描述
我想在我的 MongoDB 集合中找到与某些过滤器匹配的条目。我的 mongo 集合中的每个条目都类似于以下数据:
{
type: "admin"
senderId: "6131e7c597f50700160703fe"
read_by: [
{
Object_id: 614dbbf83ad51412f16c0757
readerId: "60b968dc5150a20015d6fcae"
}
]
},
{
type: "admin"
senderId: "6131e7c597f50700160703fe"
read_by: [
{}
]
}
我想要正确实现的是过滤集合并仅获取与“admin”匹配的条目作为类型并且在 read_by 数组(即对象数组)中没有当前用户的 ID
我写了这个(并尝试了一些其他有错误的组合:))但它不起作用,最后我得到 0 个条目,但我希望得到两个条目之一,因为第二个它的 read_by 数组为空。
非常感谢!
解决方案
我使用 cloud.mongodb.com 界面验证了我的解决方案,下面最简单的过滤器似乎可以完成这项工作:
{ "read_by.readerId": {$ne:"60b968dc5150a20015d6fcae"}}
仅返回具有空数组的记录。
$nin 运算符也可以正常工作,但如果只有单个值进行比较,那么 $ne 应该就足够了。
{ "read_by.readerId": {$nin: ["60b968dc5150a20015d6fcae"]}}
推荐阅读
- javascript - 在节点 js 中实现 util promisify 时遇到问题
- node.js - TypeError:bodyParser.urlecoded 不是函数
- gitlab - Gitlab CI 和大型 npm 依赖项
- c# - C# 可为空和 FirstOrDefault 失败
- r - 具有混合样条的图形或合并具有不同样条的图层
- node.js - 节点js中的Image_Encryption
- firebase - 如何在 nodejs 10 中使用 async/await?
- html - 关于 html img src
- database - 图表 JS 结果显示两次
- jenkins-pipeline - Salesforce 快速部署问题