我有一个具有嵌套字段的模型,如下所示:
static getSchema (){
return {
document_template: {
type: Mongoose.Schema.Types.ObjectId,
ref: TEMPLATE_MODEL_NAME
},
department: {
type: Mongoose.Schema.Types.ObjectId,
ref: DEPARTMENT_MODEL_NAME
},
fields: {
type: [ new Mongoose.Schema({
key: {
type: String,
required: true,
trim: true
},
value: {
type: Object,
required: true,
}
}) ],
required: false
}
};
} /* getSchema() */
如您所见,“字段”字段包含一个对象数组。因为我为数组中的对象定义了新的架构,所以该数组中的每个对象都有一个“ _id”字段。但是数据库中没有这些对象的集合名称。如何删除这些没有任何集合名称但具有_id的文档?
以下是文档的示例:
{
"id": "5d232d9ed64d4ea7bdd1cac5",
"template_id": "5d1df82b9bbf985a5aaac50e",
"department": "5d1dc4d9c7c4504fef430eec",
"fields": [
{
"id": "5d29967eb60ca9f88d97451b",
"key": "field 3",
"value": "333"
},
{
"id": "5d29967eb60ca9f88d97451a",
"key": "field 2",
"value": "asde"
}
]
}
我只想使用它们的ID来删除字段数组中的对象。我该怎么办?
答案 0 :(得分:0)
您可以在mongodb中使用$pull来完成此操作。
示例:
YourModel.updateMany({}, {$pull: {fields: {id: your_id}}})
或者如果要删除ID数组:
YourModel.updateMany({}, {$pull: {fields: {id: {$in: your_array_id}}}})
答案 1 :(得分:0)
访问“字段”数组,并使用uint32_t calculatedCrc = 0;
expectedCrc = *(@far uint32_t*)0x27FF0;
函数获取“ id”数组。获得ID数组后,使用.map()
获取传递参数(id)的索引。如果id存在,请使用.indexOf()
,然后保存模型。
.splice()