gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:21:51 24 4
gpt4 key购买 nike

我对 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 时间戳的用户?进行了一些搜索,但未能找到答案。

任何建议都会有很大的帮助

谢谢

最佳答案

其实,也不是很简单。这应该可以通过查询来实现,例如:

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 - 您的模型类的属性,我没有首先提到它,因为我认为您确实有一个,只是没有在问题中发布。

关于c# - 在单声道中使用 c# 驱动程序比较 mongo 集合的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com