我需要从数百个类似这样的文档中检索数字数据:
{
"_id": "123",
"Notes": {
"1222": "Something is here"
},
"BehavioralData": {
"Folder1": {
"Sex": "Male",
"Age": "22",
"Date": "",
"ResearchGroup": "",
"Institution": "University of Manitoba"
},
"MoCA": {
"Visual-Executive": "",
"Naming": "NameHere",
"Attention": "",
"Language": "",
"Abstraction": "",
"Delayed Recall": "",
"Orientation": "",
"Education": "",
"Total": ""
}
}
}
输出应如下所示:
{
"NotesLength": 1,
"BehavioralLength": 2
}
你能建议我应该使用什么工具以及如何得到上面的结果吗?我很确定我应该使用聚合来解决这个问题,但是我不知道什么命令会有帮助。
更新:我正在用PyMongo库用Python写一个脚本。显然,PyMongo在$objectToArray
部分有一些问题。我得到了以下错误:
汇总期间PlanExecutor错误::原因:$size的参数必须是数组,但类型为:空,完整错误:{"确定":0.0,"错误消息":'汇总期间PlanExecutor错误:原因:$size的参数必须是数组,但类型为:空","代码":17124,"代码名称":"位置17124","$群集时间":{"群集时间":时间戳(1658726074,53),"签名":{"哈希":b'L$\xcc\xdb\x0#f}\xbaZ\xc6\rB\xf5\xf6] \x00\xc3 ',"密钥标识":7064465060042637317}},"手术时间":时间戳(1658726074,53)}
1条答案
按热度按时间n1bvdmb61#
具有聚合管道。
由于
Notes
和BehavioralData
都是键-值对,因此需要使用$objectToArray
将值转换为数组,然后使用$size
获取数组的大小。Sample Mongo Playground