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

Remove id from array of objects in mongodb

我尝试删除 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

在我的数据库中相同:

有什么问题? 谢谢!

试试这个,从对象数组

中将语法更正为 $pull
directoryModel.update(
  { "email": email, "directory": { "$elemMatch": { "name": oldDirectory } } },
  { "$pull": { "directory.$.list": id } }
})