gpt4 book ai didi

mongodb - 如何在 MongoDB 中使用 $orderby 和 $limit 更新文档

转载 作者:可可西里 更新时间:2023-11-01 10:43:50 28 4
gpt4 key购买 nike

我想做类似的事情

UPDATE tbl SET n=10 WHERE time>NOW()-INTERVAL 1 HOUR ORDER BY b DESC LIMIT 1

我试过了

db.tbl.update({$query:{time:{$gt:new Date(new Date()-3600000)},
$orderby:{b:-1},
$limit:1},
{$set:{n:10}})

但是没有用。不过,我能够使用 db.tbl.find({$query:...}) 找到文档。

最佳答案

实际上有两种方法可以解决(顺便说一句,我认为 mongoDB 应该在他们的下一个版本中解决这个早该解决的问题)。

  1. 在 find() 之后使用 forEach()。除了 update(),您还可以使用 save()。此解决方法的问题是性能,因为更新/保存需要再次搜索。

    db.tbl.find({$query:...}).forEach(函数(d){ db.tbl.update({_id:d._id},{$set:{n:10}});})

  2. 使用 findAndModify()。这仅适用于限制 1。如果您需要更新多个文档,则 findAndModify() 无法执行此操作。

    db.tbl.findAndModify({ 查询:{时间:{$gt:新日期(新日期()-3600000)}}, 排序:{b:-1}, 更新:{$设置:{n:10}}})

关于mongodb - 如何在 MongoDB 中使用 $orderby 和 $limit 更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22949348/

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