mongodb - 嵌套对象内的 MongoDB 查询
问题描述
我正在尝试查询我的文档,看起来像这样
"approvals" : {
"REV" : "",
"SS" : "",
"ABC" : {
"status" : "Sent for approval",
"approved_at" : "",
"approved_by" : "",
},
"XYZ" : {
"status" : "Approved",
"approved_by" : "xxx@abc.com",
"approved_at" : ISODate("2020-01-06T09:48:22.777Z"),
},....
}
该Approval
对象可以有多个子文档,例如ABC,XYZ ...等,我需要查询此“批准”是否有任何"status"
未处于APPROVED
状态的子文档
解决方案
您需要运行$objectToArray来扫描您的动态密钥。然后你需要$anyElementTrue和$map来检查是否有任何Approved
值:
db.collection.find(
{
$expr: {
$anyElementTrue: {
$map: {
input: { $objectToArray: "$approvals" },
in: { $ne: [ "$$this.v.status", "Approved" ] }
}
}
}
})
推荐阅读
- python - python-将嵌套的json标准化为pandas数据框
- python - 在 jupyter notebook 中升级 python 模块
- python - 为什么“python”不被识别为内部或外部命令、可运行程序或批处理文件?
- jquery - 从ajax获取数据时如何避免页眉和页脚html代码?
- java - 即使从数据库加载,JPA hibernate 也不会更新实体对象
- django - 即使在将 url 添加到 ALLOWED_HOST 之后,Heroku 上也会出现“Django DisallowedHost at / Invalid HTTP_HOST header:”错误
- python - python - 如何在Python中加入SQLAlchemy中的两个表时在一个对象中获取键值对?
- python - 将具有不同列的多个数据框合并在一起,除了 5
- r - 训练 SVM 模型时出错:错误:结果中的一个或多个因子级别没有数据:'2'
- python - 熊猫垂直拆分列