数据插入/更新

时间:2016-06-29 07:50:33

标签: node.js mongodb

假设我有一个集合,例如;

[
  {name: "alex" , id:1 , age: 23},
  {name: "felix" , id:2 , age: 29},
  {name: "lenix" , id:3 , age: 45},
]

我想写一个更新并插入db查询,其中包括以下情况;

  • 如果存在name则更新,否则将其插入数据库; db.collection.update({name: name_} ,{name: name_, id: id_, age: age_ }, {upsert: true})

但主要问题是这个;

我从客户端获取id和name字段。如果name已更改

db.collection.update({name: name_} ,{name: name_, id: id_, age: age_ }, {upsert: true})

给了我一个错误。因为id保持不变,并且无法插入具有新名称值但与旧字段具有相同ID字段的数据。

让我们用一个例子说清楚。我有;

[
  {name: "alex" , id:1 , age: 23}
]

在客户端,名称和ID字段为alexi1。我请求; db.collection.update({name: "alexi"} ,{name: "alexi", id: 1, age: 43}, {upsert: true}) 已存在ID为1的数据。插入返回错误。

我在服务器中分配id字段;

if(there is id field from client)
   id_ = id;
else
   id_ = some random value

所以在这种情况下,id来自客户端,我不会重新生成它的值。那么我该如何处理这种情况呢?正如我所说,我想编写一个可以向集合中插入/更新数据的查询。

1 个答案:

答案 0 :(得分:0)

如果您 mongoose ,请从shcema中删除 unique:true 约束。它允许您为该字段添加重复值。