python - 基于数组字段的MongoDB查找查询
问题描述
收藏:
{
"_id" : ObjectId("57506d74c469888f0d631be6"),
"name" : "mycollection",
"details" : [
{
"date" : "25/03/2020",
"number" : "A",
"active" : false
}
},
{
"_id" : ObjectId("57506d74c469888f0d631usi"),
"name" : "newcollection",
"details" : [
{
"date" : "30/03/2020",
"number" : "C",
"active" : false
}
},
{
"_id" : ObjectId("57506d74c4633388f0d631usi"),
"name" : "mycollection",
"details" : [
{
"date" : "31/03/2020",
"number" : "C",
"active" : false
}
},
}
根据详细信息字段中的活动状态获取值的查找查询。
我努力了:
db.collection.find(
{"name": "mycollection", "details": {"active": False}})
预期结果:我需要在每个集合的详细信息字段下活动为 false 的集合。此处应显示记录 ID ObjectId("57506d74c469888f0d631be6") 和 ObjectId("57506d74c4633388f0d631usi")。
解决方案
文档在此处包含有关此类查询的部分:https ://docs.mongodb.com/manual/tutorial/query-array-of-documents/
您的查询不起作用,因为该语法要求数组包含该确切对象,但数组中的文档包含额外字段,因此不匹配。
这种情况的查询是db.collection.find({"name": "mycollection", "details.active": False})
。
注意:这将返回数组包含 active==false 的对象的所有文档,但它不会过滤实际数组以删除任何 active=true 的元素。
推荐阅读
- azure - Azure 应用程序网关背后的 Azure 应用服务
- sql-server - SqlServer 2017 SSIS - SSISDB & MSDB 理解
- c++11 - clang -Wglobal-constructors 有关复制/移动构造函数的行为
- shell - 发送电子邮件时发件人未送达通知
- javascript - 为什么我的 javascript 文件不使用文本文件中的数据?
- c - CS50 PSET-2 凯撒分段错误
- python - 我该如何为电报修复它?对等通道
- javascript - SVGRenderer 函数
- node.js - 从 MongoDB 聚合中获取数据的问题
- java - RequestBody 未正确映射具有对象列表的对象