给定此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不是date类型,但它确实是。
有什么原因使我不能以这种方式查询嵌套的workOrder对象吗?我只是搞不懂为什么我可以查询Job文档的created date属性,我可以查询workOrders数组中嵌套的user文档的数组,但是最后一个查询不起作用。
注意,没有抛出错误,它只是不返回任何结果。即使我将日期范围扩展到绝对包含所有日期,例如2000年1月1日到2016年1月1日,我也什么也得不到。
发布于 2015-10-24 04:06:39
你能把这两个startDate都替换为:
created: {
type: Date,
default: Date.now
},...to确定您是否可以向一个文档添加多个日期,并且您的startDate代码是否正确?
https://stackoverflow.com/questions/33308686
复制相似问题