Mongoose - findOneAndUpdate 动态 $push 到数组
Mongoose - findOneAndUpdate dynamically $push into array
我正在尝试将新值动态添加到数组字段中。
最近取得了足够的进步,不必费心在这里问他们,尽管这是我认为确实应该问的一个问题!所以从这里开始,这是我的架构:
var ugh = new mongoose.Schema({
yes: String,
bio: String,
keys: [{
nickname: String,
data1: String,
data2: Boolean,
data3: String,
data4: String,
}]
});
var ughhh = mongoose.model('X', ugh, 'x');
这里是我试图写来解决的解析器:
setSomething: async (root, { nickname, data1, data2, data3, data4 }, { userId }) => {
if (nickname) {
let action = await ughhh.findOneAndUpdate(
{ _id: userId },
{ $set:
{
'keys.0.nickname': nickname,
'keys.0.data1': data1,
'keys.0.data2': data2,
'keys.0.data3': data3,
'keys.0.data4': data4,
},
},
{
new: true,
upsert: true,
});
action;
}
return null;
},
},
现在我很喜欢新设置的键的数字排序,从0开始。
但是当我尝试 $set
另一个时,它替换了值而不是将新条目添加到数组中!
如何将新条目添加到数组中而不是替换当前值,我更喜欢添加具有唯一 ID 或键的新条目以供将来参考
你可以像这样推入数组字段:
{ $push:
keys: {
'nickname': nickname,
'data1': data1,
'data2': data2,
'data3': data3,
'data4': data4
}
}
请注意,当您将新项目推入数组时,它会生成一个唯一的“_id”字段,这对将来的参考很有用
{ $push: {
keys: {
nickname: nickname,
data1: data1,
data2: data2,
data3: data3,
data4: data4,
}
}
},
确实解决了问题:)
我正在尝试将新值动态添加到数组字段中。
最近取得了足够的进步,不必费心在这里问他们,尽管这是我认为确实应该问的一个问题!所以从这里开始,这是我的架构:
var ugh = new mongoose.Schema({
yes: String,
bio: String,
keys: [{
nickname: String,
data1: String,
data2: Boolean,
data3: String,
data4: String,
}]
});
var ughhh = mongoose.model('X', ugh, 'x');
这里是我试图写来解决的解析器:
setSomething: async (root, { nickname, data1, data2, data3, data4 }, { userId }) => {
if (nickname) {
let action = await ughhh.findOneAndUpdate(
{ _id: userId },
{ $set:
{
'keys.0.nickname': nickname,
'keys.0.data1': data1,
'keys.0.data2': data2,
'keys.0.data3': data3,
'keys.0.data4': data4,
},
},
{
new: true,
upsert: true,
});
action;
}
return null;
},
},
现在我很喜欢新设置的键的数字排序,从0开始。
但是当我尝试 $set
另一个时,它替换了值而不是将新条目添加到数组中!
如何将新条目添加到数组中而不是替换当前值,我更喜欢添加具有唯一 ID 或键的新条目以供将来参考
你可以像这样推入数组字段:
{ $push:
keys: {
'nickname': nickname,
'data1': data1,
'data2': data2,
'data3': data3,
'data4': data4
}
}
请注意,当您将新项目推入数组时,它会生成一个唯一的“_id”字段,这对将来的参考很有用
{ $push: {
keys: {
nickname: nickname,
data1: data1,
data2: data2,
data3: data3,
data4: data4,
}
}
},
确实解决了问题:)