我对 Mongodb 和 C# 驱动程序完全陌生。
开发是在 Ubuntu 14.04 上使用 Monodevelop 完成的,Mongodb 的版本是 3.2.10 :
目前我的代码有一个 POCO 如下:
public class User
{
public String Name { get; set;}
public DateTime LastModifiedAt { get; set;}
public DateTime LastSyncedAt { get; set;}
public User ()
{
}
}
已经能够创建集合并添加用户。
如何查找 LastModifiedAt 时间戳大于 LastSyncedAt 时间戳的用户?进行了一些搜索,但未能找到答案。
任何建议都会有很大的帮助
Thanks
其实,事情并不简单。这应该可以通过查询实现,例如:
var users = collection.Find(user => user.LastModifiedAt > user.LastSyncedAt).ToList();
但不幸的是 MongoDriver 无法翻译这个表达式。
您可以查询所有用户并在客户端进行过滤:
var users = collection.Find(Builders<User>.Filter.Empty)
.ToEnumerable()
.Where(user => user.LastModifiedAt > user.LastSyncedAt)
.ToList();
或者发送json查询,因为MongoDb本身就可以做到:
var jsonFliter = "{\"$where\" : \"this.LastModifiedAt>this.LastSyncedAt\"}";
var users = collection.Find(new JsonFilterDefinition<User>(jsonFliter))
.ToList();
而且,是的,您的模型类需要一个 Id - 属性,我没有首先提到它,因为我认为您确实有一个,只是没有发布在问题中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)