Dea*_*Iss 14 mongodb nosql mongodb-query
我最近开始开发一个应用程序,最后让我的node.js服务器与我的mongodb数据库进行通信.
我想插入一堆看起来像这样的JSON对象:
{
'Username': 'Bob',
'longitude': '58.3',
'latitude': '0.3'
}
Run Code Online (Sandbox Code Playgroud)
如果将此Object插入myCollection,然后我尝试使用Username Bob再次插入一个对象,但是使用不同的坐标,我想要最新的'Username':'Bob'对象来替换之前的对象.myCollection中只能有一个带有'Username'的对象:'Bob'.
如果这是一个关系数据库,我会把Bob作为主键或者其他东西,但我想知道用mongoDb做到这一点的最佳方法是什么.我应该使用update + upsert方法吗?我试过了,它似乎没有用!
抱歉,如果这看起来像一个愚蠢的问题,但我仍然是所有这一切的新手.
Ana*_*lan 25
是的,update带有该upsert选项的简单查询应该满足您的用例:
db.collection.update(
{username:"Bob"},
{$set:{'longitude': '58.3', 'latitude': '0.3'}},
{ upsert: true}
)
Run Code Online (Sandbox Code Playgroud)
当您第一次运行上述查询时(即,集合中不存在Bob),将创建一个新文档.但是当您第二次使用lat/long的新值运行它时,现有文档将使用新的lat/long值进行更新.
您还可以unique index在该username字段上创建一个,以防止意外创建"Bob"的多条记录:
db.collection.ensureIndex( { "username": 1 }, { unique: true } )
Run Code Online (Sandbox Code Playgroud)
编辑:
db.collection.ensureIndex()现已弃用,是别名db.collection.createIndex().因此,db.collection.createIndex()用于创建索引
| 归档时间: |
|
| 查看次数: |
19147 次 |
| 最近记录: |