【发布时间】:2016-06-15 13:28:29
【问题描述】:
{
"_id" : ObjectId("576155a6cd87b68f7e6e42c9"),
"First_Name" : "ok",
"Last_Name" : "jaao",
"Email" : "xyz@gmail.com",
"Sessions" : [
{
"Last_Login" : "Wed, Jun 14, 2016 6:48 PM",
"Class" : "fb",
"ID" : "123"
},
{
"Last_Login" : "Wed, Jun 15, 2016 6:48 PM",
"ID" : "111",
"Class" : "fb"
}
],
"Count" : 2
},
{
"_id" : ObjectId("576155ccf6d8979e7e77df27"),
"First_Name" : "abc",
"Last_Name" : "xyz",
"Email" : "xyz@gmail.com",
"Sessions" : [
{
"Last_Login" : "Wed, Jun 15, 2016 6:49 PM",
"Class" : "fb",
"ID" : "123"
}
],
"Count" : 1
}
这是我的 json 结构。我想要一个 mongoDB 查询来检索今天登录的每个用户,即其Last_Login 具有今天的日期。
我希望我的输出为:
{
"_id" : ObjectId("576155a6cd87b68f7e6e42c9"),
"First_Name" : "ok",
"Last_Name" : "jaao",
"Email" : "xyz@gmail.com",
"Sessions" : [
{
"Last_Login" : "Wed, Jun 15, 2016 6:48 PM",
"ID" : "111",
"Class" : "fb"
}
],
"Count" : 2
},
{
"_id" : ObjectId("576155ccf6d8979e7e77df27"),
"First_Name" : "abc",
"Last_Name" : "xyz",
"Email" : "xyz@gmail.com",
"Sessions" : [
{
"Last_Login" : "Wed, Jun 15, 2016 6:49 PM",
"Class" : "fb",
"ID" : "123"
}
],
"Count" : 1
}
【问题讨论】:
-
这样存储的日期将需要可能无效的复杂查询。考虑将架构更改为将
Last_Login日期存储为ISODate() -
Last_Login 字段包含 moment().format('llll') 格式的数据,由 moment.js 库提供,我还需要将其更改为 ISODate() 吗???
-
是的,最好将 MongoDB 中的日期存储为适当的 Date() 类型,而不是将它们存储为上述格式的字符串。
-
你能给我一个将它作为 ISODate() 插入的例子吗,现在我将它用作: Last_Login : moment.format('llll')
-
moment()有一个toDate()方法,您可以使用它返回一个 JavaScript Date 对象或简单地创建一个 JS Date 对象的新实例。所以你可以像Last_Login: moment().toDate()或Last_Login: new Date()那样做
标签: mongodb mongodb-query aggregation-framework