We are in 2016
}
我有一个带有上述记录的集合,有两个日期对象:
{
"_id" : ObjectId("5754f6b904896f7e0c8b45e5"),
"coordinates" : [
76.7033471,
30.7104586
],
"delivery_delay" : NumberLong(0),
"delivery_radius_in_km" : 10,
"delivery_slot_duration" : NumberLong(30),
"description" : "wgwhsh",
"image" : "item_5751680404896f7e0c8b45dd_15755.png",
"image_thumbnail" : "item_5751680404896f7e0c8b45dd_15755.png",
"item_id" : "5751680404896f7e0c8b45dd",
"pick_up_or_delivery" : "Delivery",
"price_in_primary_currency" : 300,
"primary_currency" : "INR",
"quantity_available" : NumberLong(6),
"quantity_delivered" : NumberLong(10),
"quantity_ordered" : NumberLong(100),
"recurring" : true,
"repeat_every_friday" : true,
"repeat_every_monday" : true,
"repeat_every_saturday" : true,
"repeat_every_sunday" : true,
"repeat_every_thursday" : true,
"repeat_every_tuesday" : true,
"repeat_every_wednesday" : true,
"restriction" : [
"Vegetarian",
"Beef free"
],
"sale_event_latitude" : "30.7104586",
"sale_event_longitude" : "76.7033471",
"seller_address_id" : "5751142604896f7e0c8b45c8",
"seller_designation_as_shown_to_buyers" : "good selle",
"seller_rating" : 4,
"seller_user_id" : "575110eb04896f7e0c8b45bf",
"title" : "anamak",
"type" : [
"Indian"
],
"pickup_date_delivery_and_time_from" : ISODate("2016-06-06T04:05:54Z"),
"pickup_delivery_date_and_time_to" : ISODate("2016-06-14T04:06:54Z"),
"cut_off_time" : ISODate("2016-06-10T04:06:54Z"),
"status" : true,
"updated_at" : ISODate("2016-06-06T04:06:17.017Z"),
"created_at" : ISODate("2016-06-06T04:06:17.017Z")
1->pickup_date_delivery_and_time_from
以上字段与2->pickup_delivery_date_and_time_to
一起存储。现在我想查询获取timestamps
小于"pickup_date_delivery_and_time_from(only time)"
且04:05:14Z
应大于{的所有结果{1}}从上方字段中保留日期。
只有时间才能引起关注。
我必须将上述字段与当前时间匹配。
任何帮助!!!
答案 0 :(得分:0)
最好的方法是与日期保持一个单独的时间字段以获得最佳效果。
如果您无法更改架构,并且您必须使用所拥有的架构,则有两种方法。
$where
db.mycollection.find({$where : function() { return <your matching criteria>} })
最后的手段。这会给性能带来影响。
使用汇总
{ "_id" : 1, ISODate("2014-01-01T08:15:39.736Z") }
db.mycollection.aggregate(
[
{
$project:
{
year: { $year: "$date" },
month: { $month: "$date" },
day: { $dayOfMonth: "$date" },
hour: { $hour: "$date" },
minutes: { $minute: "$date" },
seconds: { $second: "$date" },
milliseconds: { $millisecond: "$date" },
dayOfYear: { $dayOfYear: "$date" },
dayOfWeek: { $dayOfWeek: "$date" },
week: { $week: "$date" }
}
}
]
)
并根据您的需要使用其他管道运营商进行匹配。
答案 1 :(得分:0)
linker >> general
我已从两个日期开始分钟,开始小时和开始秒,但没有运气确定我将要提供的时间将与100%的准确度匹配。
我找到了我所做的解决方案----&gt;&gt;&gt;&gt;&gt;&gt;&gt;
我使用mongo $ hour and minute使用$ minute和相同的秒钟获得了一小时。我添加了所有的秒数,并且也从必须匹配的日期做同样的事情。现在我比较输入的秒数数据库中保存的总日期秒。
因为秒数从当前晚上的0点开始。