根据本地timeDate查询ISODate

时间:2018-03-25 07:09:03

标签: mongodb

我正在努力解决一些看似难以置信的问题。如果下面列出的transaction_date(顺便说一下是一个字符串,而我似乎无法将其转换为爱情或金钱的ISODate)是在UTC时间,那我怎么能查询一个月的范围(如果这是一个约会)并总结销售额?

我不想要的是UTC月份,我想要本地时区月份。所以我想我的问题是双重的,

  1. 有没有人知道如何将transaction_date转换为ISODate而不是字符串? $ DateFromString不起作用
  2. 如何将查询作为预期的本地时区输入,其中transaction_date存储为UTC日期?
  3. 谢谢,马特

        {
        "_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
            }
        ]
        }  
    

1 个答案:

答案 0 :(得分:1)

使用MongoDB 3.6,您可以使用 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")
}

这将返回

 NSDictionary *dict = @{
                               @"data": @[
                                       @{
                                           @"timings": @{
                                                   @"Sunrise": @"07:14 (PKT)",
                                                   @"Sunset": @"18:15 (PKT)",
                                                   @"Midnight": @"00:45 (PKT)"
                                                   }
                                           },
                                       @{
                                           @"timings": @{
                                                   @"Sunrise": @"07:13 (PKT)",
                                                   @"Sunset": @"06:40 (PKT)",
                                                   @"Midnight": @"00:45 (PKT)"
                                                   }
                                           }
                                       ]
                               };
     NSArray *arrData = [NSArray arrayWithArray:[dict objectForKey:@"data"]];
    [self saveinDatabase:arrData];

你可以在这里试试:mongoplayground.net/p/lfA33eBRx8p