所以我存储了加入IRC聊天的用户日志,保留了他们登录的时间(和其他内容)以及他们注销的时间,现在我每次都会添加一个新条目,每当我需要信息时,我就把它全部拿走并使用Last()来获取最新的信息,我认识到这是低效的,因为它只会随着时间的推移而变慢并且更多用户登录,所以如何更新最后一个条目(所以我不必删除所有内容并丢失到目前为止所有内容)但是,如果该用户之前没有加入,请创建一个新条目。
在此期间,是否有一种有效的方法可以删除除最后一个条目之外的所有条目?
我正在使用的编程语言是C#。
答案 0 :(得分:1)
您可以使用findAndModify
http://docs.mongodb.org/manual/reference/command/findAndModify/#dbcmd.findAndModify查找现有记录,如果存在,请根据需要更新LastLogin
或LastLogoff
字段。
如果它不存在,你可以去创建它。
由于findAndmodify
也支持排序顺序,您甚至可以在每个用户保留多条记录的情况下使用它 - findAndModify最近的打开登录以关闭它。但除非您需要每个会话的审计跟踪,否则我会坚持使用单个用户记录,或者如果您确实需要审计跟踪,请在单独的集合中执行此操作,并仍然保留用户记录中的最后一次登录/注销。
答案 1 :(得分:0)
我认为这样做的最佳方法是为lastLogIn保留另一个单独的字段或注销任何内容。