如何在带有 ObjectId 数组的 Mongoose 中使用 $addToSet?

How to use $addToSet in Mongoose with array of ObjectId?

在 MongoDB 集合中,我只需要为文档的数组字段添加唯一 ID。我正在使用 Mongoose 的 findByIdAndUpdate。我可以将值作为 id 传递还是需要在更新主体中将值作为 ObjectId() 传递。 应该是 1 还是 2?

1.

await User.findByIdAndUpdate(userId, { $addToSet: { roleIds: roleId } })
await User.findByIdAndUpdate(userId, { $addToSet: { roleIds: mongoose.Types.ObjectId(roleId) } })

架构如下:

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
    roleIds: [
        {
            type: mongoose.Schema.Types.ObjectId,
            ref: "Role",
        },
    ],
});

module.exports = mongoose.model("User", UserSchema);

你的模式是什么,如果你在你的模式中定义了 roleIds 元素,你必须使用 1