mongodb - MongoDB使用否定查找同一子文档中多个条件为真的记录
问题描述
我们将如何寻找在同一子文档中多个条件为真而这些条件中的至少一个被否定的记录?
db.getCollection('clients').find( {
data: { '$exists': true },
'data.updates': { '$elemMatch': {
name: { $not: /^KB3109103/i },
install_date: { $gt: 128573812 }
} }
});
这将返回所有记录,因为$not
在内部似乎不起作用$elemMatch
。
解决方案:
找到了解决方法,添加 $and (根据文档与没有相同)解决了它。
db.getCollection('clients').find( {
data: { '$exists': true },
'data.updates': { '$elemMatch': {
$and: [
{name: { $not: /^KB3109103/i }},
{install_date: { $gt: 128573812 }}
]
} }
});
解决方案
推荐阅读
- java - Bad_CommunicationError (code=0x80050000, description="2147811328, Read timed out") 在 OPC java 代码中连接 AWS EC2 实例
- javascript - 猫鼬模型函数调用中的缓冲是什么?
- postgresql - Centos 不使用可用内存
- ios - Ionic Capacitor Vue 附件栏自定义按钮
- sql-server - ADF 复制活动 - 其他列无法输入函数
- reactjs - ReactJS:不依赖数组或对象的 2D 嵌套循环渲染元素
- ruby-on-rails - Rails 单元测试:无法获取编辑路径
- security - Java 安全 api - 通过实现 HttpAuthenticationMechanism 获取 ServerAuthContext 时出错
- r - 如何在R中实现在不同权重的几个角色中随机选择一个角色数据(sample_n不起作用)
- docker - 什么时候在括号内写 docker 命令?