C# 如何按不早于的时间戳选择数据。。。(必须在服务器端读取时间戳)

C# 如何按不早于的时间戳选择数据。。。(必须在服务器端读取时间戳),c#,mongodb,mongodb-query,C#,Mongodb,Mongodb Query,我需要分别选择一个文档,我必须使用条件检查是否存在。在SQL中,我应该编写以下查询: 选择* 来自虚拟 哪里 时间戳>=当前时间戳-300 表达式CURRENT_TIMESTAMP-300应理解为“当前服务器时间戳减去5分钟”,而不管使用的是SQL server(语法不同) 要实现这一点,我需要使用服务器时间戳。原因很明显-我不能信任客户端的日期/时间设置 我可以从客户端读取当前的服务器时间戳,然后再次使用它来构造一个过滤器,但更舒适和严肃的是构造一个能够直接访问服务器时间戳的过滤器 我当前正

我需要分别选择一个文档,我必须使用条件检查是否存在。在SQL中,我应该编写以下查询:

选择*
来自虚拟
哪里
时间戳>=当前时间戳-300
表达式
CURRENT_TIMESTAMP-300
应理解为“当前服务器时间戳减去5分钟”,而不管使用的是SQL server(语法不同)

要实现这一点,我需要使用服务器时间戳。原因很明显-我不能信任客户端的日期/时间设置

我可以从客户端读取当前的服务器时间戳,然后再次使用它来构造一个过滤器,但更舒适和严肃的是构造一个能够直接访问服务器时间戳的过滤器

我当前正在使用此筛选器:

FilterDefinition<BsonDocument> filter = new BsonDocument()
{
    { "$or", new BsonArray()
    {
        new BsonDocument() { { "processing_started", new BsonDocument() { { "$exists", false } } } },
        new BsonDocument() { { "processing_started", BsonNull.Value } },
        new BsonDocument()
        {
            { "$and", new BsonArray()
            {
                new BsonDocument() { { "processing_status", "started" } },
                new BsonDocument() { { "processing_started", new BsonDocument() { { "$lte", new BsonDocument() { { "$subtract", new BsonArray() { "new Date()", ProcessingTimeout * 1000 } } } } } } }
            }
            }
        }
    }
    }
};
filterdefinitionfilter=newbsondocument()
{
{“$or”,新的BsonArray()
{
新BsonDocument(){{“处理”已启动,新BsonDocument(){{{“$exists”,false}},
新的BsonDocument(){{“处理_已启动”,BsonNull.Value},
新的BsonDocument()
{
{“$and”,新的BsonArray()
{
新的BsonDocument(){{“处理状态”,“已启动”},
新BsonDocument(){{“处理”已启动,新BsonDocument(){{“$lte”,新BsonDocument(){{“$subtract”,新BsonArray(){“新日期()”,ProcessingTimeout*1000}}}
}
}
}
}
}
};

但是我不确定是在服务器端还是在客户端计算这个
“new Date()”
表达式。

您要计算的300天是天,1=1天。最简单的方法可能是将分钟数除以24,然后再除以60

(当前时间戳-(5.0/24.0/60.0))


是的,但请注意您关于服务器时间的评论。如果是在客户机上运行的应用程序,则为客户机时间,但如果代码为SQL,则为服务器时间。

过滤器在客户机应用程序内运行,因此我获得客户机时间。有没有办法构造一个直接访问服务器时间的过滤器?SQL将是服务器时间。如我在评论中所述。您正在使用SQL进行的检查将是服务器时间,因此您使用SQL进行检查是正确的。除了为此编写某种服务之外,没有办法检查客户端的应用程序内部,但是使用SQL可以获得服务器时间。如果您需要将服务器时间输入应用程序,您可以调用SQL“select CURRENT_TIMESTAMP”,但我问如何做类似的事情(如上面的SQL)在MongoDB的find语句中,我以为您只是提到了查询问题,因为您的问题中没有提到MongoDB。