Mongodb 基于本地时间日期查询ISODate
我正试图找出一些似乎深不可测的事情。如果下面列出的交易日期(顺便说一句,它是一个字符串,我似乎无法将其转换为爱情或金钱的ISODate)是UTC时间,那么我如何查询月份范围(如果是日期)并计算销售额 我不想要UTC月份,我想要本地时区月份。所以我想我的问题是双重的Mongodb 基于本地时间日期查询ISODate,mongodb,Mongodb,我正试图找出一些似乎深不可测的事情。如果下面列出的交易日期(顺便说一句,它是一个字符串,我似乎无法将其转换为爱情或金钱的ISODate)是UTC时间,那么我如何查询月份范围(如果是日期)并计算销售额 我不想要UTC月份,我想要本地时区月份。所以我想我的问题是双重的 有人知道如何将事务日期转换为ISODate而不是字符串吗$DateFromString不起作用 如何执行输入为预期本地时区的查询,其中事务日期存储为UTC日期 谢谢,马特 { "_id" : ObjectId("5ab
{
"_id" : ObjectId("5ab485c669150d532c41769f"),
"object_origin" : "vend",
"company" : "5a9a73bb-0c5a-41db-8d06-76ac2d1e04b0",
"connection" : "2f758916-2eb1-4d95-a3bb-7d6258bc2143",
"object_creation_date" : ISODate("2018-03-16T10:40:20.875+13:00"),
"transaction_date" : "2018-03-07T11:36:48",
"transaction_gross_value" : 165,
"transaction_net_value" : 137.5,
"transaction_tax_value" : 27.5,
"transaction_cost_value" : 80,
"object_class" : "goods-service-transaction",
"object_origin_category" : "point-of-sale",
"object_type" : "receipt",
"object_origin_type" : "offline",
"transaction_reference" : "119",
"transaction_status" : "CLOSED",
"transaction_currency" : "GBP",
"party_identifier" : "WALKIN",
"staff_identifier" : "02dcd191-ae2b-11e6-f485-79681a952bd4",
"staff_name" : "uat2@9spokes.com",
"line_items" : [
{
"item_name" : "Dress Shirt / Polyester / Large",
"item_system_id" : "5051599d-40c2-a66a-11e8-21fbce105df0",
"item_identifier" : "10024",
"item_category" : "sales-revenue",
"item_quantity" : 1,
"item_net_unit_sale_value" : 62.5,
"item_net_unit_discount_value" : 0,
"item_net_unit_member_value" : 0,
"item_net_unit_cost_value" : 60,
"item_unit_tax_value" : 12.5,
"item_price_list_reference" : 0,
"item_total_sale_value" : 62.5,
"item_total_tax_value" : 12.5
},
{
"item_name" : "Dress Shirt / Cotton / Large",
"item_system_id" : "5051599d-40c2-a66a-11e8-21fbd07bb8a4",
"item_identifier" : "10021",
"item_category" : "sales-revenue",
"item_quantity" : 1,
"item_net_unit_sale_value" : 75,
"item_net_unit_discount_value" : 0,
"item_net_unit_member_value" : 0,
"item_net_unit_cost_value" : 20,
"item_unit_tax_value" : 15,
"item_price_list_reference" : 0,
"item_total_sale_value" : 75,
"item_total_tax_value" : 15
}
]
}
使用MongoDB 3.6,您可以使用
$dateFromString
设置时区。这将返回一个ISODate()
,您可以使用$gt
或$lt
进行查询:
db.collection.aggregate([{
"$project": {
"transaction_date": {
"$dateFromString": {
"dateString": "$transaction_date",
"timezone": "America/New_York"
}
}
}
}])
这会回来的
{
"_id": ObjectId("5ab485c669150d532c41769f"),
"transaction_date": ISODate("2018-03-07T16:36:48Z")
}
您可以在这里尝试:so,升级到Mongo 3.6 so日期排序,但是,仍然是本地时间与UTC的永不结束的集群周期。如果我需要比较全球价值观,我需要世界各地公司的当地时间背景。存储用于查找目的的本地时间是否可行?一个脚本如何提供这种外观?有没有关于声明适用于所有时区的特定时间和日期的想法?比如,我想要每个国家周一下午1点的销售额——不是按时区转换,而是具体到下午1点。谢谢