Mongodb:如果存在则收到通知,如果不存在则插入

时间:2014-03-04 15:00:26

标签: mongodb database

我正在用Mongodb处理我的用户注册逻辑。我需要插入一个用户,如果它不存在,但在插入之前要知道它是否已经存在,所以我可以通知他已经注册的用户。

使用update的{​​{1}}方法不会返回插入了多少文档的结果(我没有。而upsert方法只会在插入后找到文档。所以我都不会这样做在我插入之前,我无法知道是否已有这样的文档。

有办法做到这一点吗?

更新

findAndModifyupdate不是很好的例子。如果用户已经存在,我不想更新我的文档。我只是想知道在插入之前findAndModify是否存在。如果没有,那么插入它。

我没有使用username插入。我应该使用_id作为username并使用它来插入吗?

2 个答案:

答案 0 :(得分:1)

使用唯一键(在电子邮件地址或标识用户的任何内容上)并在尝试插入时检查相应的错误代码。就是那样。不只是MongoDB。

db.users.createIndex({email: 1}, {unique: true})

现在,在插入重复的电子邮件时,请检查错误代码1100011001

答案 1 :(得分:0)

如果您愿意使用_id作为您的用户ID,您可以使用save()命令。

如果没有记录,则会创建新记录,否则将更新现有记录。

检查用户然后有选择地更新可能更好,但这是一种愚蠢的做事方式: http://docs.mongodb.org/manual/reference/method/db.collection.save/