如何在mongodb查询中查找和更新字段的最小值?

科尔法

我经常运行mongo db查询来查找具有最低值的文档,然后运行另一个查询来更新它们。

例如:

    Ticket.find({
    userEvent: eventData._id,
    })
    .sort( { purchasersMinimumPrice: 1 } )
    .then(data => {

    let SecureRefundRequests = data.slice(0, 6).map(e => {return (Ticket.findByIdAndUpdate({_id: e._id}, {
                    refundAttemptExpires :(Date.now() + (5*60*1000))})
                )})

    Promise.all(SecureRefundRequests)
    })

为了减少对数据库的调用次数,我想在一个查询中完成所有这些操作。

我一直在玩db.collection.update,但无法弄清楚如何使用返回的排序文档的索引。

这可能吗?

您真的不能在单个update命令中做到这一点。

db.collection.update分别评估每个文档,而不在文档之间保持任何状态。这意味着您可以在文档中包含的数组中找到最小值,但是无法在文档之间比较值。

您可以通过在上创建索引,{userEvent:1, purchasersMinimumPrice:1, _id:1}并在查询上应用限制6,并仅对_id进行投影,来提高现有查询的性能这些都将使mongod可以找到与ID匹配的6个具有最低值的文档,并返回_id,而无需进行内存中的排序,也无需实际查看文档即可返回进行更新所需的_id,即,查询已完全覆盖索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在SQL查询中比较日期和日期数组并在MySQL中更新字段值?

如何在Go模板中更新字段值

如何在Java流集合中查找BigDecimal字段的最小值?

用mysql中的最大值和最小值更新字段

如何在numpy数组中逐轴查找最小值/最大值

如何在Ecto迁移中动态更新字段值?

在mongodb中的单个查询中获取最小值和最大值

如何在生产和查询中向mongodb添加新字段?

如何在MongoDB中普遍更新字段?

C ++如何在n个元素的一维数组中查找最小值和最大值?

如何在MongoDB中获取最小值的文档?

如何基于R中的最小值和列值创建新字段

如何在结构数组中查找最大值/最小值

如何在1个查询中从Mongo DB获取最小值和最大值?C#

如何在collections.defaultdict中查找最小值和最大值

如何在Julia中查找数组的最小值的值和索引?

在.json中查找最大值和最小值

从数组中查找最小值和最大值,最小值始终为0

Mongo查询-在文档中查找最小值

如何在mongodb中全局更新字段值

如何在同一My SQL查询中获取ID,最小值和最大值?

如何在 MS Access 的单个查询中找到一个字段中的最小值和另一个字段中的关联值?

如何在不使用地图/SQL 的情况下在列表中查找最大值和最小值?

如何在组(SQL)中查找具有最小值和最大值的记录?

如何从嵌套数组中获取字段和值并查询它们以在 mongodb 中查找文档?

如何在 MongoDB 中获取最大值和最小值?

如何使用循环从文件中查找最大值和最小值

使用聚合和查找 mongodb 從對像數組中獲取最小值

cakephp 4 - 如何從相關表中查找最大值和最小值