我正在用Mongodb处理我的用户注册逻辑。我需要插入一个用户,如果它不存在,但在插入之前要知道它是否已经存在,所以我可以通知他已经注册的用户。
使用update
的{{1}}方法不会返回插入了多少文档的结果(我没有。而upsert
方法只会在插入后找到文档。所以我都不会这样做在我插入之前,我无法知道是否已有这样的文档。
有办法做到这一点吗?
findAndModify
和update
不是很好的例子。如果用户已经存在,我不想更新我的文档。我只是想知道在插入之前findAndModify
是否存在。如果没有,那么插入它。
我没有使用username
插入。我应该使用_id
作为username
并使用它来插入吗?
答案 0 :(得分:1)
使用唯一键(在电子邮件地址或标识用户的任何内容上)并在尝试插入时检查相应的错误代码。就是那样。不只是MongoDB。
db.users.createIndex({email: 1}, {unique: true})
现在,在插入重复的电子邮件时,请检查错误代码11000
和11001
。
答案 1 :(得分:0)
如果您愿意使用_id作为您的用户ID,您可以使用save()命令。
如果没有记录,则会创建新记录,否则将更新现有记录。
检查用户然后有选择地更新可能更好,但这是一种愚蠢的做事方式: http://docs.mongodb.org/manual/reference/method/db.collection.save/