仅当MongoDB数据库中的条目已存在时才更新它

时间:2015-10-03 22:21:57

标签: c# mongodb

所以我存储了加入IRC聊天的用户日志,保留了他们登录的时间(和其他内容)以及他们注销的时间,现在我每次都会添加一个新条目,每当我需要信息时,我就把它全部拿走并使用Last()来获取最新的信息,我认识到这是低效的,因为它只会随着时间的推移而变慢并且更多用户登录,所以如何更新最后一个条目(所以我不必删除所有内容并丢失到目前为止所有内容)但是,如果该用户之前没有加入,请创建一个新条目。

在此期间,是否有一种有效的方法可以删除除最后一个条目之外的所有条目?

我正在使用的编程语言是C#。

2 个答案:

答案 0 :(得分:1)

您可以使用findAndModify http://docs.mongodb.org/manual/reference/command/findAndModify/#dbcmd.findAndModify查找现有记录,如果存在,请根据需要更新LastLoginLastLogoff字段。

如果它不存在,你可以去创建它。

由于findAndmodify也支持排序顺序,您甚至可以在每个用户保留多条记录的情况下使用它 - findAndModify最近的打开登录以关闭它。但除非您需要每个会话的审计跟踪,否则我会坚持使用单个用户记录,或者如果您确实需要审计跟踪,请在单独的集合中执行此操作,并仍然保留用户记录中的最后一次登录/注销。

答案 1 :(得分:0)

我认为这样做的最佳方法是为lastLogIn保留另一个单独的字段或注销任何内容。