gpt4 book ai didi

javascript - 从 mongodb 中的子文档数组中提取(除一个之外的所有)文档

转载 作者:行者123 更新时间:2023-11-28 19:47:22 24 4
gpt4 key购买 nike

我有一组不久前导入的数据。在每次导入时,我都会将“历史”子文档附加到历史数组中。整体结构是这样的,但有更多字段:

{ _id: ObjectId('000000000000000001'),
history: [ {date: ISODate("2014-05-25T22:00:00Z"), value: 1},
{date: ISODate("2014-05-26T22:00:00Z"), value: 1},
{date: ISODate("2014-05-26T22:00:00Z"), value: 1}
]
}

问题是,在某些情况下,导入很糟糕,我最终得到了同一日期的重复历史记录。我想删除所有重复项。我尝试使用 $pull 更新运算符来执行此操作,并将重复调用它,直到每个日期都有正确数量的历史记录条目。问题是,我有超过一百万个数据点,每个数据点都有不同数量的重复项 - 有些重复项多达 12 个。有没有一种方法可以在不使用mapReduce的情况下拉取除一个之外的所有内容?我在想这样的事情:

db.test.update({'history.date': new Date(2014,4,26)},
{
$pullAll :
{'history': {date: new Date(2014,4,27)}},
$push : {'history' : {}}
}, {multi:true})

最佳答案

试试这个,效果很好:

db.collection.find().forEach(function(doc) {
db.collection.update(
{ "_id": doc._id },
{ "$set": { "history": [doc.history] } }
);
})

关于javascript - 从 mongodb 中的子文档数组中提取(除一个之外的所有)文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com