我正在从此API吸引用户。
https://redmine-mock-api.herokuapp.com/api/v1/users
共有100个(100个不同的ID)。我使用猫鼬将它们添加到mongodb数据库中,但问题是它一直在添加(我已经有5000个用户(50次重复100个用户)
如果id
不存在,我想添加;如果存在,则要更新。
我在做什么错? users
是API中的用户数组
db.collection("users").insertMany(users, function (error, response) {
if (error) throw error;
console.log("Number of users inserted: " + response.insertedCount);
db.close();
});
答案 0 :(得分:3)
尝试以下格式
db.collection.update({'_id': Id}, //Find with the unique identifier
{//put whatever you want to insert},
{upsert: true}
)
答案 1 :(得分:0)
看着mongo db docs似乎insertMany
不是您要在这里使用的。您可能想使用updateMany
,因为它支持upserts
不支持的insertMany
。
您应该可以使用以下内容:
db.collection("users").updateMany(
{},
users,
{
upsert: true
}
)
这是一个空的过滤器,因此如果该项目不存在,则将插入,如果存在则进行更新。
答案 2 :(得分:0)
db.collection.updateMany(
<filter>,
<update>,
{
upsert: <boolean>
}
)
updateMany()方法采用以下参数:
过滤器
更新的选择标准。可以使用与find()方法相同的查询选择器。
更新
要应用的修改。
Upsert
可选的。如果为true,则updateMany()之一:
如果没有文档与过滤器匹配,则创建一个新文档。有关更多详细信息,请参见upsert行为。 更新与过滤器匹配的文档。 为避免多次更新,请确保对过滤器字段进行唯一索引。
默认为false。
db.users.updateMany(
{},
{$set: users},
{
upsert: true
}
)