gpt4 book ai didi

javascript - 为什么参数 multi 在 mongo 请求中不起作用?

转载 作者:可可西里 更新时间:2023-11-01 10:38:35 24 4
gpt4 key购买 nike

我尝试用一​​个请求更新 mongo 集合中的几个项目:

// [1, 2, 3] - numbers array.
const days = req.body.days;

const updated = await Item.update(
{shift: shiftId, day: {$in: days}},
{multi : true},
{update: {
name: 'one value for all objects witch corresponding condition',
},
function(err, docs) {
console.log(docs);
}
);

此项目架构:

const itemSchema = new Schema({
shift: {
ref: 'shift',
type: Schema.Types.ObjectId,
required: true
},
day: {
type: Number,
required: true
},
name: {
type: String
}
});

但是我称此代码仅更新一个对象。我有许多具有相同 shiftItems。但是每个 Item 都有一个独特的日子,我需要更新包含在 days 数组中的所有 Items

例如,如果我们有 shiftId = 'abc'days = [1, 2],我需要更新所有具有 shiftId = ' 的项目abc'day = 1 OR day = 2 都应该更新。

为什么我的解决方案出现意外行为并且在我设置 {multi : true} 的同时只更新一个对象?如何解决?谢谢。

最佳答案

multi: true是更新查询中的最后一个参数,您已经使用了它的第二个参数。

所以你必须使用multi: true在最后一个参数中,需要使用 $set更新字段。

const updated = await Item.update(
{ "shift": shiftId, "day": { "$in": days }},
{ "$set": { "name": "one value for all objects witch corresponding condition" }},
{ "multi": true }
)

关于javascript - 为什么参数 multi 在 mongo 请求中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51695953/

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