node.js - 如何在不插入重复条目的情况下更新 MongoDB 中的文档?

标签 node.js mongodb

我的收藏中有这些文档。

{"_id": 1, "name": "Banana, "quantity": 3}
{"_id": 2, "name": "Apple, "quantity": 4}
{"_id": 3, "name": "Orange, "quantity": 5}

现在我需要编辑集合中的第二个文档。

var doc = {"_id": 2}
var updateQuery = {"_id": 2, "name": "Banana", "quantity": 4}
var dataModified = { $set: updateQuery };

并使用 updateOne 查询,

db.collection.updateOne(doc, dataModified) 

这很好用。但这会在文档中添加“Banana”的重复条目。像这样:

{"_id": 1, "name": "Banana, "quantity": 3}
{"_id": 2, "name": "Banana, "quantity": 4}
{"_id": 3, "name": "Orange, "quantity": 5}

那么,我是否可以在更新文档时找出/限制 "name" 字段的重复条目?

最佳答案

您可以create unique indexname 字段上,当您尝试插入重复值时,您会收到异常:

db.members.createIndex( { "name": 1 }, { unique: true } )

关于node.js - 如何在不插入重复条目的情况下更新 MongoDB 中的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55917971/

相关文章:

mongodb - 更新失败后出现数据无法保存和stackoverflow错误?

node.js - 使用node/vuejs,如何让google在客户端发出API请求

node.js - nginx x-accel-redirect 与 304 响应的 etag 比较

javascript - 在nodejs中,生成直接stdout和stderr到日志文件不起作用

mongodb 2.4.9版本,无法启动mongodb服务

node.js - Docker 和 Mac OSX 的权限问题

mongodb - 在不解码的情况下在 upsert 中使用 mgo 聚合迭代器数据

node.js - MongoDb 按日期分组并分页

javascript - 具有 Node mssql 对象的存储过程的受影响行

javascript - 如何在nodejs中导出函数