不确定这是否可能,但是,我在一个集合中有很少的documents
。documents
中有重复项,唯一不同的是timestamp
例如:
{
name: 'abc',
verified: false,
createdAt: 'timestamp1'
},
{
name: 'abc',
verified: false,
createdAt: 'timestamp2'
},
{
name: 'abc',
verified: false,
createdAt: 'timestamp3'
},
{
name: 'eee',
verified: false,
createdAt: 'timestamp1'
},
{
name: 'eee',
verified: false,
createdAt: 'timestamp2'
}
可以看到,name
字段有重复项,但我只想用最新的timestamp
、verified
到true
进行更新
但是timestamp
确实是随机捕获的。
我可以使用update and $in
,但这将更新所有文档,而不是仅更新具有最新timestamp
的文档
mongoose创建的时间戳示例
},
"updatedAt": {
"$date": "2018-06-08T23:39:49.310Z"
},
"createdAt": {
"$date": "2018-06-08T23:21:15.669Z"
},
这是我使用$in
编写的简单代码
const names = ['abc', 'eee'];
Model.update({
'name': {
$in: names
}
}, { verified: true }, { multi: true });
提前感谢您的帮助。
发布于 2018-06-10 03:25:04
按createdAt
查找指定名称的最新文档:
const names = ['abc', 'eee'];
collection.aggregate(
[
{$match: {'name': {$in: names}}},
{$group: {_id: '$name', createdAt: {$max: '$createdAt'}}},
]);
将查询结果作为Array
或cursor
保存在变量result
中。
然后,您可以更新文档:
results.forEach((newestDocumentForName) => collection.update({_id: newestDocumentForName['_id']}, {/*your set operation*/});
https://stackoverflow.com/questions/50777521
复制相似问题