在mono中使用c#驱动程序比较mongo集合的两个字段

2023-12-25

我对 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(使用前将#替换为@)

在mono中使用c#驱动程序比较mongo集合的两个字段 的相关文章

随机推荐