当前位置:  开发笔记 > 编程语言 > 正文

Mongodb仅在值唯一时插入,否则在node.js中更新

如何解决《Mongodb仅在值唯一时插入,否则在node.js中更新》经验,为你挑选了1个好方法。

我最近开始开发一个应用程序,最后让我的node.js服务器与我的mongodb数据库进行通信.

我想插入一堆看起来像这样的JSON对象:

   {
    'Username': 'Bob',
    'longitude': '58.3',
    'latitude': '0.3'
   }

如果将此Object插入myCollection,然后我尝试使用Username Bob再次插入一个对象,但是使用不同的坐标,我想要最新的'Username':'Bob'对象来替换之前的对象.myCollection中只能有一个带有'Username'的对象:'Bob'.

如果这是一个关系数据库,我会把Bob作为主键或者其他东西,但我想知道用mongoDb做到这一点的最佳方法是什么.我应该使用update + upsert方法吗?我试过了,它似乎没有用!

抱歉,如果这看起来像一个愚蠢的问题,但我仍然是所有这一切的新手.



1> Anand Jayaba..:

是的,update带有该upsert选项的简单查询应该满足您的用例:

db.collection.update(
   {username:"Bob"},
   {$set:{'longitude': '58.3', 'latitude': '0.3'}},
   { upsert: true}
)

当您第一次运行上述查询时(即,集合中不存在Bob),将创建一个新文档.但是当您第二次使用lat/long的新值运行它时,现有文档将使用新的lat/long值进行更新.

您还可以unique index在该username字段上创建一个,以防止意外创建"Bob"的多条记录:

db.collection.ensureIndex( { "username": 1 }, { unique: true } )

编辑:

db.collection.ensureIndex()现已弃用,是别名db.collection.createIndex().因此,db.collection.createIndex()用于创建索引

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有