从 mongodb 中的对象数组中删除 id

Posted

技术标签:

【中文标题】从 mongodb 中的对象数组中删除 id【英文标题】:Remove id from array of objects in mongodb 【发布时间】:2019-01-10 19:50:24 【问题描述】:

我尝试删除 ObjectId 数组中的 ObjectID。

我的模特:

let directoryCollection = new Schema(
  
    email:  type: String ,
    directory: [
        name:  type: String ,
        list: [ type: Schema.ObjectId ]
    ]
  ,
  collection: 'directory'
);

我在 list 中有一个 ObjectID 数组。

我的数组中删除索引的代码:

let id = mongoose.Types.ObjectId(req.body.id);

directoryModel.update('email': email, 'directory.name': oldDirectory, $pull: 'directory.list': id , function (req, result) 
    console.log(result);
    res.json('ok');
 );

但结果是:

ok: 0, n: 0, nModified: 0

Email 变量和 oldDirectory 变量是正确的。 我的ID是:5b5e5f34cfcd3906c8e6aa20

在我的数据库中相同:

有什么问题? 谢谢你!

【问题讨论】:

【参考方案1】:

试试这个,将对象数组中$pull的语法更正

directoryModel.update(
   "email": email, "directory":  "$elemMatch":  "name": oldDirectory   ,
   "$pull":  "directory.$.list": id  
)

【讨论】:

这行不通。它将拉整个 directory 而不是数组中的元素。他已经试过了。

以上是关于从 mongodb 中的对象数组中删除 id的主要内容,如果未能解决你的问题,请参考以下文章

从 Mongoose/MongoDB 中的数组中删除对象

MongoDB,从数组中删除对象

从 Mongo DB 文档的数组中的对象数组中删除一个值

Mongodb - 我需要从数组中删除多个对象

Mongodb $pull 执行从嵌套子数组中删除 ObjectId("... id") 。

Mongoose 从数组中的数组中拉出对象