Mongoose/Node:将元素推入数组类型的文档字段?
Posted
技术标签:
【中文标题】Mongoose/Node:将元素推入数组类型的文档字段?【英文标题】:Mongoose/Node: push element into document field of type array? 【发布时间】:2021-03-09 12:27:11 【问题描述】:我有一个带有数组类型字段的 Mongoose 模式,用于包含多个字符串:
const exampleSchema = new.mongooseSchema(
field1: String,
field2: String,
field3: [String]
)
我正在设置后端以将新字符串连接/推送到 field3 数组中,希望得到这样的结果:
field1: 'some string',
field2: 'some other string',
field3: [
'string inside array1',
'string inside array2',
'string inside array3',
]
我正在尝试使用 findByIdAndUpdate() 执行此操作,并尝试使用扩展运算符将新字符串连接到字段 3 中,但我不完全确定如何使用该语法。
是否有任何干净的方法可以做到这一点,而不必创建一个新的更新对象来替换整个文档?
【问题讨论】:
【参考方案1】:你只需要$push
。
查看this 示例以了解语法。
使用mongo是这样的
db.collection.update(
/* Your find object*/
,
"$push":
"field3": "another string"
)
使用$push
可以将值添加到数组中。很简单。
和使用moongoose一模一样,都得把push对象传入参数中。
model.findByIdAndUpdate(your_id,
"$push":
"field3": "another string"
)
【讨论】:
【参考方案2】:我是如何学会在猫鼬中更新一小部分项目的:
const example = await exampleSchema.findById(id)
// Return if non existing
if (!example )
return res
.status(404)
.send(`Example with id:$id was not found.`)
// Sets the new field3
example.field3 = [...example.field3, req.body.addedField3]
try
const result = await example.save()
res.send(result)
catch (exeption)
res.status(400).send(exeption.message)
这被包裹在来自express.Router
的router.put
中
【讨论】:
以上是关于Mongoose/Node:将元素推入数组类型的文档字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个数组推入另一个数组元素中作为 JavaScript 中的新属性? [复制]