我以数组的形式在文档中插入日志项。我将文档大小限制为5MB,以确保文档大小不会增加。
这里一个文档包含一个数组,所有日志项都将存储到数组中。假设我将500 log items of 5 MB
大小以数组的形式存储在一个文档中。
当我删除497个日志项时,它显示文档中剩余的3个日志项,但当我尝试从3个日志项中删除其中一个项时,整个文档被删除,我不知道是什么发生。
文档中的数组是否应该具有一些最小数量的数据。
注意:我在应用程序级别限制文档大小。
以下是示例数据:
activityLogDetails:
[{
"activityLog": {
"acctId": 1,
"info1": {
"itemName": "-",
"value": "-"
},
"info2": {
"itemName": "-",
"value": "-"
},
"errorCode": "",
"internalInformation": "",
"kind": "Infomation",
"loginId": "0",
"opeLogId": "G1_1",
"operation": "startDiscovery",
"result": "normal",
"targetId": "1",
"timestamp": "1470980265729",
"undoFlag": "false"
}
},{
"activityLog": {
"acctId": 2,
"info1": {
"itemName": "-",
"value": "-"
},
"info2": {
"itemName": "-",
"value": "-"
},
"errorCode": "",
"internalInformation": "",
"kind": "Infomation",
"loginId": "0",
"opeLogId": "G1_1",
"operation": "startDiscovery",
"result": "normal",
"targetId": "1",
"timestamp": "1470980265729",
"undoFlag": "false"
}
},
etc....]
删除查询:
db.test.remove({activityLogDetails.activityLog.acctId:{$gt:2}})
任何机构都可以告诉我这可能是什么问题吗?
答案 0 :(得分:1)
您在查询中执行的操作将删除整个记录。
使用$pull
尝试以下查询: -
db.test.updateMany(
{'activityLogDetails.activityLog.acctId':{$gt:2}},
{$pull:{activityLogDetails:{'activityLog.acctId':{$gt:2}}}})
有关如何使用的更多信息,请参阅$pull。