如果不存在,Mongoose 将多个对象添加到数组
Posted
技术标签:
【中文标题】如果不存在,Mongoose 将多个对象添加到数组【英文标题】:Mongoose add multiple object to array if not exist based 【发布时间】:2019-01-18 22:14:36 【问题描述】:如何根据键将多个对象添加到数组中?
我需要在 one 查询中添加多个对象,检查每个 object key
是否不存在或重复,否则添加对象。 (label
可以重复)
架构
new Schema(
additional: [
key: type: String, required: true, unique: true ,
label: type: String, required: true
]
)
请求负载:
[ key: "city", label: "CITY", key: "gender", label: "GENDER"
, key: "city" ,label: "CITY1, key: "city2", label: "CITY"]
预期结果:
[
key: "city", label: "CITY",
key: "gender", label: "GENDER",
key: "city2", label: "CITY"
]
我试图找到解决方案,但找不到任何解决方案。
【问题讨论】:
【参考方案1】:你可以尝试在mongodb中使用bulkWrite
操作
假设您有以下有效负载要更新
const payload = [
key: "city", label: "CITY" , key: "gender", label: "GENDER" ,
key: "city", label: "CITY1" , key: "city2", label: "CITY"
]
查询批量更新文档
Model.bulkWrite(
payload.map((data) =>
(
updateOne:
filter: '_id': 'xxxx', 'additional.key' : $ne: data.key ,
update: $push: additional: data
)
)
)
它将像这样批量发送更新请求
bulkWrite([
updateOne: filter: '_id': 'xxxx', 'additional.key' : $ne: data.key , update: $push: additional: data ,
updateOne: filter: '_id': 'xxxx', 'additional.key' : $ne: data.key , update: $push: additional: data
])
【讨论】:
对我不起作用。它是添加空文档。你测试了吗? ***.com/questions/51549326/… 它工作正常,只需要添加 _id: 'xxxxx' of specific doc以上是关于如果不存在,Mongoose 将多个对象添加到数组的主要内容,如果未能解决你的问题,请参考以下文章
如果未找到值,则使用 mongoose 将对象添加到数组中,否则更新字段
使用 mongoose 将多个不存在的文档插入 MongoDB