如何通过匹配 ObjectId 字段从嵌套数组中删除对象
Posted
技术标签:
【中文标题】如何通过匹配 ObjectId 字段从嵌套数组中删除对象【英文标题】:How to remove an object from a nested array by match ObjectId field 【发布时间】:2018-11-21 18:32:31 【问题描述】:我的网络应用有团队和用户。将用户添加到团队时,会在团队成员数组中创建一个新成员对象。用户 ObjectId 保存在成员对象下。现在,我需要处理一个用户被删除的情况,这意味着该成员应该从在其成员数组下找到该用户的所有团队中删除。我使用猫鼬和nodeJs
注意:我无法通过 objectId 字段匹配
【问题讨论】:
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及必要的最短代码 重现它在问题本身。没有明确的问题陈述的问题对其他读者没有用处。见:How to create a Minimal, Complete, and Verifiable example. 显示你的架构 这就是您的问题关闭时可能附加的信息,除非您现在接受建议,否则肯定会如此。您的“问题”读起来就像是聊天室的开场白。这不是那个,所以请通过实际显示一个“可重现的例子”来“提出问题”,就像给出的链接中概述的那样 【参考方案1】:我正在尝试根据您的描述来回答。如果您发现任何问题,请上传具体代码和您的架构结构。
var ObjectId = require('mongoose').Types.ObjectId;
Team.update(
,
$pull: members: _id: new ObjectId(id) , // Here , id is variable where your userid is stored
multi: true
)
希望对您有所帮助。
【讨论】:
不需要multi true,因为objectID总是唯一的,而在mongoose中不需要单独转换为Object id,我们可以直接传递字符串 Lalit tnx 为您的回复!尽管您正确理解了我,但它似乎不起作用。也许我需要在最后拯救团队?还是使用匹配? Ratan,用户 obj/document 关联的团队可以很多 Lalit,我也需要查询部分。我很难找到正确的语法 const TeamSchema = new Schema( members: [ _id: false, member: type: Schema.Types.ObjectId, ref: 'User', required: true, 角色: _id: false, roleName: type: String, default: 'Employee', required: true , usePushEach: true);以上是关于如何通过匹配 ObjectId 字段从嵌套数组中删除对象的主要内容,如果未能解决你的问题,请参考以下文章
如何更新嵌套数组MongoDb Node js中的必填字段[重复]