鉴于此Job
对象结构,其中users
是一组用户文档:
{
_id: "56228b5ba851623018f88ff7",
created: "2015-10-17T17:54:35.475Z",
active: true,
workOrders: [{
startDate: "2015-10-18T05:00:00.000Z",
name: "Test1",
users: [{...}]
},{
startDate: "2015-10-20T05:00:00.000Z",
name: "Test2",
users: [{...}]
}]
}
为什么此查询有效:
Job.find({
'workOrders.users._id' : userId,
'created' : { '$gte' : new Date('10/17/2015'), '$lt': new Date('10/25/2015')},
'active' : true
}).exec(cb);
但是这个没有:
Job.find({
'workOrders.users._id' : userId,
'workOrders.startDate' : { '$gte' : new Date('10/20/2015'), '$lt': new Date('10/25/2015')},
'active' : true
}).exec(cb);
最初的想法是workOrder.startDate
不是日期类型,但它是。
有什么理由我不能这样查询嵌套的workOrder
对象吗?我很困惑为什么我可以查询created
文档上的Job
日期属性,我可以在user
数组中查询嵌套的workOrders
文档数组,但后来最后一个查询无效。
注意,没有抛出错误,它只返回没有结果。即使我将日期范围扩大到绝对包括所有日期,例如01/01/2000到2016年1月1日,我什么都没得到。
答案 0 :(得分:0)
您可以将startDate
替换为:
created: {
type: Date,
default: Date.now
},
...确定您是否可以向文档添加多个日期,以及startDate
代码是否不正确?