gpt4 book ai didi

mysql - mongo 中的 mysql 日期函数等效吗?

转载 作者:行者123 更新时间:2023-11-30 00:07:44 25 4
gpt4 key购买 nike

如何在 Mongo 中编写以下 SQL 查询?

select * from test where date(created)=curdate()

注意创建的是一个日期时间字段。

最佳答案

使用 MongoDB 处理此问题的最佳方法是简单地使用具有外部计算日期的范围查询。因此,如果您正在使用当前日期并想要当天的所有项目:

var start = new Date();
start = new Date( start.valueOf() - start.valueOf() % ( 1000 * 60 * 60 * 24 ) );
end = new Date( start.valueOf() + ( 1000 * 60 * 60 * 24 ) );

db.collection.find({ "created": { "$gte": start, "$lt": end } });

所以 $gte$lt运算符定义要从您计算或以其他方式提供的值中搜索的日期范围。该方法与其他语言相同,它们都具有一个日期对象“类型”,该对象序列化为驱动程序所需的 BSON。检查您的驱动程序文档以了解详细信息。

您基本上可以使用 $where 执行该查询评估 JavaScript 的运算符,但不建议这样做。原因是已经给出的“范围”形式可以利用索引来减少扫描的项目,而 JavaScript 评估则不能:

db.collection.find(function() {
var today = new Date();
today = new Date( today.valueOf() - today.valueOf() % ( 1000 * 60 * 60 * 24 ) );

return (
( this.created.valueOf() - this.created.valueOf() % ( 1000 * 60 * 60 * 24 ) )
== today.valueOf()
);
})

这本质上相当于 SQL 语句,但它不如第一种形式高效,因为无法使用索引来计算。 SQL 也是如此。

因此,请使用范围查询版本,因为它更好,并尽可能避免 JavaScript 评估。

您可以在手册中找到有关 MongoDB 术语中常见 SQL 语句的更多信息:

关于mysql - mongo 中的 mysql 日期函数等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24373629/

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