这是集合的结构
{
"userid": "c7ff591eda700a6d159fe74677f02c98",
"__v": 0,
"created": "2017-02-02T09:35:55.372Z",
"schedules": [
{
"description": "demo event",
"scheduled": "2/1/17 3:05 PM"
},
{
"scheduled": "1/25/17 3:06 PM",
"description": "demo event 2"
},
{
"scheduled": "2/4/17 3:06 PM",
"description": "demo event 3"
},
{
"scheduled": "2/1/17 3:10 PM",
"description": "demo"
},
{
"scheduled": "2/9/17 3:10 PM",
"description": "demo2"
},
{
"scheduled": "2/1/17 3:23 PM",
"description": "das"
},
{
"scheduled": "2/3/16 3:30 PM",
"description": "call ted"
},
{
"scheduled": "2/3/16 3:30 PM",
"description": "call ted"
},
{
"scheduled": "2/3/16 3:30 PM",
"description": "call ted"
}
]
}
我只想获取在当前日期和时间之后安排的数据。
我也试过
db.<collection name>.find({"userid":c7ff591eda700a6d159fe74677f02c98},
{schedules:{$elemMatch:{scheduled:{$gte:'2/1/17 4:00 PM'}}}});
这句话返回仅在那个1 feb之后安排的返回 &#34;演示事件3&#34;。
db.<collection name>.find({"userid":c7ff591eda700a6d159fe74677f02c98,
'schedules.scheduled':{$gte:'2/1/17 4:00 PM'});
此查询返回整个集合。 有人请帮帮我..
答案 0 :(得分:0)
当我们使用下面的查询时,它会在当前文档中找到匹配后跳转到集合中的另一个文档。
db.<collection name>.find({"userid":c7ff591eda700a6d159fe74677f02c98},
{schedules:{$elemMatch:{scheduled:{$gte:'2/1/17 4:00 PM'}}}});
解决这个问题我们可以使用
var date = '2/1/17 3:40 PM';
db.<collection_name>.aggregate([
{'$match':{'schedules':{'$elemMatch':
{"scheduled":{'$gte': date}}}}},
{'$unwind':'$schedules'},
{'$match':{"schedules.scheduled":{"$gte":date}}},
{'$group':{'_id':"$_id",'schedules':
{'$addToSet':'$schedules'}}}])
它将返回给定日期字符串中将来的所有日程表。