gpt4 book ai didi

node.js - 使用 arrayFilters 更新嵌套数组

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

我见过像 this 这样的例子或this SO question我们可以轻松地使用位置 $ 运算符来更新数组中的对象。

我正在尝试做同样的事情,但我必须使用对象子属性。

示例:

// Data model:
UserSchema = new Schema({
permissionsPerOrganization: [{
organization: {
type: ObjectId,
ref: 'Organization'
},
role: {
type: ObjectId,
ref: 'Role'
}
}],

我必须使用准确的 _id 更新 permissionsPerOrganization 中的角色。

这是我所拥有的:

this.activeSchema.findByIdAndUpdate(
{ _id: user._id, 'permissionsPerOrganization.organization._id': org._id },
{ 'permissionsPerOrganization.$.role': roleId },
{
new: true
})

我也尝试过新的 $[identifier]语法似乎是为这种用例而设计的,但它失败了......

请问你有线索吗?

最佳答案

您可以尝试使用 arrayFilters通过以下方式

db.collection.update(
{ "_id": user._id },
{ "$set": { "permissionsPerOrganization.$[array].role": roleId }},
{ "arrayFilters": [{ "array.organization": org._id }], new: true }
)

关于node.js - 使用 arrayFilters 更新嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51447576/

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