我的返回文档如下所示:
{
"_id": "57terjrtgutgsjj",
"eventList": [
{
"eventId": "5346a816e4b0efc8bd9759b5",
"riskScore": 0,
"entity": {
"entityId": "5346a816e4b0efc8bd9759b6",
"name": "src ip",
"value": "209.178.49.9",
"type": "IP",
"direction": "S",
"isKey": "true"
}
}
]
}
我想要这种格式的结果:
{
"_id": "57terjrtgutgsjj",
"eventList": [
{
"eventId": "5346a816e4b0efc8bd9759b5",
"riskScore": 0,
"entity": [
{
"entityId": "5346a816e4b0efc8bd9759b6",
"name": "src ip",
"value": "209.178.49.9",
"type": "IP",
"direction": "S",
"isKey": "true"
}
]
}
]
}
第一和第二文档之间的区别在于“实体”字段在第一种情况下是简单文档,而在第二种情况下是数组。 所以有可能将一个简单的文档转换为array中的一个元素。显然,该数组中只有一个对象,这与要求无关。所以任何人都可以告诉我这是否可能。
提前致谢。
答案 0 :(得分:0)
我会怀疑你是否真的想要这样做并仔细查看positional $
运算符文档,了解嵌套数组通常不是好消息的原因如果你想更新它们。
但如果您确定要真的这样做,那么下面的表格将适合,并指出您当然需要先实际获取文档内容,否则使用$unset
运算符:
db.collection.find({ "_id": "57terjrtgutgsjj" }).forEach(function(doc) {
db.collection.update(
{ "_id": doc._id },
{ "$unset": { "entity": 1 } }
);
db.collection.update(
{ "_id": doc._id },
{ "$push": { "entity": doc.entity } }
);
)
所以一次更新,没有。实际上,你可以从MongoDB的2.6版本中获得"bulk updates"的帮助,但是你需要批量处理它的方式有所减弱。它可以应用,但您应该能够看到需要使用的编码模式。