【发布时间】:2018-09-14 19:46:08
【问题描述】:
我在查询中遇到了这个奇怪的结果:
我的架构:
var taskSchema = new mongoose.Schema({
name: String,
done: Boolean,
dueDate: Date,
info: String
});
var eventSchema = new mongoose.Schema({
tasks: [ taskSchema ],
}, { usePushEach: true });
我在 Robo 3T 中的查询:
db.getCollection('events').find({ 'tasks.dueDate':
{
$gte: new ISODate('2018-04-01T00:00:00'),
$lte: new ISODate('2018-05-01T00:00:00')
}
}, { 'tasks.$': 1, _id: 1 }
)
哪些结果:
/* 1 */
{
"_id" : ObjectId("59fabc5ec85c3400123cdf5b"),
"tasks" : [
{
"name" : "Comprar champagne",
"dueDate" : ISODate("2019-01-31T06:00:00.000Z"),
"_id" : ObjectId("5a723e868dba4f0014c0c556"),
"done" : true
}
]
}
/* 2 */
{
"_id" : ObjectId("5a1c99ccba7cc60014c99945"),
"tasks" : [
{
"name" : "Prova do vestido",
"dueDate" : ISODate("2018-05-10T03:00:00.000Z"),
"_id" : ObjectId("5a7336d5b882bc0014daeba9"),
"done" : false
}
]
}
如您所见,它返回了一份包含 2019 年 task.dueDate 的文档,超出了查询范围。 为什么会这样?
MongoDB 版本 v3.6.3
提前致谢! 感谢您的宝贵时间!
【问题讨论】:
-
我已经添加了您上面提到的数据集并运行了您的查询,结果我得到了 0 个结果:1) i.imgur.com/knh0LZE.png 2) i.imgur.com/b13OW7p.png
-
其实这不是文档的全部,我约定在这里更好地展示。在这里你可以看到所有返回的文档:textsaver.flap.tv/lists/1wj0
-
检查答案中的查询,让我知道这对您有用。