假设我有一个集合,例如;
[
{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字段为alexi
和1
。我请求;
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来自客户端,我不会重新生成它的值。那么我该如何处理这种情况呢?正如我所说,我想编写一个可以向集合中插入/更新数据的查询。
答案 0 :(得分:0)
如果您 mongoose ,请从shcema中删除 unique:true 约束。它允许您为该字段添加重复值。