【发布时间】:2019-06-19 07:23:28
【问题描述】:
我的 mongodb version 3.40 中保存了以下结构的文档
测试
{
"_id" : ObjectId("5d08ad7ed510022ebc548905"),
"userId" : "2",
"startTime" : "2019-03-20 17:52:25",
"endTime" : "2019-03-20 17:53:49",
"loginTime" : 10
},
{
"_id" : ObjectId("5d08ad7ed510022ebc548904"),
"userId" : "1",
"startTime" : "2019-03-20 17:52:25",
"endTime" : "2019-03-20 17:53:49",
"loginTime" : 10
},{
"_id" : ObjectId("5d08ad7ed510022ebc548903"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 55
},
{
"_id" : ObjectId("5d08ad7ed510022ebc548902"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 84
}
现在我想获取像 gte 和 lte 这样的结果,我已经编写了查询,但它不能正常工作。意味着我没有得到预期的输出。
我的输出低于输出
{
"_id" : ObjectId("5d08ad7ed510022ebc548902"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 84
},
{
"_id" : ObjectId("5d08ad7ed510022ebc548903"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 55
}
预期输出
{
"_id" : ObjectId("5d08ad7ed510022ebc548902"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 84
},
{
"_id" : ObjectId("5d08ad7ed510022ebc548903"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 55
},
{
"_id" : ObjectId("5d08ad7ed510022ebc548904"),
"userId" : "1",
"startTime" : "2019-03-20 17:52:25",
"endTime" : "2019-03-20 17:53:49",
"loginTime" : 10
}
我的代码
db.test.aggregate([
{ "$match":
{
'userId' : { $in : ['1']},
'startTime': {$gte: '2019-03-19' },
'endTime': {$lte: '2019-03-20' }
}
}
])
我已经搜索了很多次但我得到了答案,请任何人帮助我解决这个问题,如果可能的话在这里发布你的答案
已更新代码但无法正常工作
db.test.aggregate([
{
$match: {
$and: [
{userId: {$in: ["1"]}},
{ $or : [ { startTime : { $gte : '2019-03-19' } }, { endTime : { $lt : '2019-03-19' } } ] }
]
}
}
])
预期的输出我不应该得到2019-03-20
获取输出
/* 1 createdAt:6/18/2019, 2:53:10 PM*/
{
"_id" : ObjectId("5d08ad7ed510022ebc548902"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 84
},
/* 2 createdAt:6/18/2019, 2:53:10 PM*/
{
"_id" : ObjectId("5d08ad7ed510022ebc548903"),
"userId" : "1",
"startTime" : "2019-03-19 17:52:25",
"endTime" : "2019-03-19 17:53:49",
"loginTime" : 55
},
/* 3 createdAt:6/18/2019, 2:53:10 PM*/
{
"_id" : ObjectId("5d08ad7ed510022ebc548904"),
"userId" : "1",
"startTime" : "2019-03-20 17:52:25",
"endTime" : "2019-03-20 17:53:49",
"loginTime" : 10
}
【问题讨论】:
-
你能显示查询吗?
-
我发布了我的代码
-
我已经尝试过,但没有得到我预期的答案,你能请任何人发布你的答案
-
时间是保存为字符串还是日期对象?
标签: mongodb mongodb-query