gpt4 book ai didi

node.js - 如何在单个 mongo 查询中将一个字段的值分配给另一个字段

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:31 25 4
gpt4 key购买 nike

假设你有一个 mongo 记录:

{
_id : 1234,
x: 12,
y: 34
}

我需要一个查询来更新特定的_id,这样

x = y;//assign the value of y to x
y = new Date().getTime();//assign current time to y

对于特定的_id。当前我正在读取修改实体并更新它的id。这可以在单个查询中完成吗?使用 Mongoose 相当于什么

最佳答案

除非您使用$where,否则您无法执行此操作运算符(operator)。但您应该避免这样做,因为使用 $where 可能会导致性能下降,如 documentation 中所述。 :

$where evaluates JavaScript and cannot take advantage of indexes. Therefore, query performance improves when you express your query using the standard MongoDB operators (e.g., $gt, $in).

db.collection.update({ '$where':  function() { return this.x === this.y }}, 
{'$set': { 'y': new Date().getTime() }}
)

最好的方法是像您一样运行两个查询。一个用于检索 _id 值,另一个用于更新您的文档。

您无法将 y 的值分配给 x 并将 new Date().getTime() 分配给 y 使用单个 MongoDB 查询。您需要首先使用 .findOne() 方法检索 y 值,然后使用另一个查询来更新文档。

var y = db.collection.findOne({ '_id': <given ObjectId()> }, 
{ 'y': 1, '_id': 0 }
)['y'];

db.collection.update( { '_id': <given ObjectId()> },
{ '$set': { 'x': y, 'y': new Date().getTime() } }
)

关于node.js - 如何在单个 mongo 查询中将一个字段的值分配给另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34940282/

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