我有一个mongoDb的集合,看起来像这样
{
"slno" : NumberInt(1),
"name" : "Item 1"
}
{
"slno" : NumberInt(2),
"name" : "Item 2"
}
{
"slno" : NumberInt(3),
"name" : "Item 3"
}
我收到angularJs前端的请求,要求将此集合更新为
{
"slno" : NumberInt(1),
"name" : "Item 3"
}
{
"slno" : NumberInt(2),
"name" : "Item 1"
}
{
"slno" : NumberInt(3),
"name" : "Item 2"
}
我使用Mongoose 5.0 ORM和Node 6.11并表达4.15 . 请帮我找到实现这一目标的最佳方法 .
2 回答
你基本上想要bulkWrite(),它可以获取对象的输入数组,并使用它来发出更新匹配文档的请求"batch" .
假设在
req.body.updates
中发送了一系列文档,那么你会有类似的东西这会在输入时发送请求:
通过单个响应,可以在单个请求中有效地执行对服务器的所有更新 .
另请参阅bulkWrite()上的核心MongoDB文档 . 这是
mongo
shell方法的文档,但是大多数驱动程序中的所有选项和语法都完全相同,尤其是在所有基于JavaScript的驱动程序中 .作为与猫鼬一起使用的方法的完整工作演示:
或者对于更具有
async/await
的现代环境:其中加载初始数据然后更新,显示响应对象(序列化)以及处理更新后集合中的结果项:
那是使用与NodeJS v6.x兼容的语法
Neil Lunn的答案发生了微小的变化 .
感谢Neil Lunn .