mongodb - 如果一个条件为真,Mongo 匹配返回所有数据
问题描述
我对 mongo 查询有疑问。我想在给定的时间内获取所有数据。例如。从 2019 年 1 月 1 日至 2019 年 1 月 10 日。但我看到,即使一个元素与条件匹配,mongo 也会返回整个数据。
db.production.aggregate([
{
"$group": {
"_id": "$machine_name",
"array": {
"$push": {
"value": "$value",
"type": "$variable_name",
"date": {
"$dateFromString": {
"dateString": "$datetime_from",
"format": "%Y-%m-%d %H:%M:%S"
}
}
}
}
}
},
{
"$match": {
"$and": [
{
"array.date": {
"$gt": ISODate("2019-01-01T00:00:00Z")
}
},
{
"array.date": {
"$lt":ISODate("2019-01-02T23:59:59Z")
}
}
]
}
}
]);
它应该只返回给定时间段内的数据
解决方案
投影您要查看的数据。例如当我们使用查找查询时
db.collectionname.find({
fieldname: "value"
},
{
fieldname: 1
})
所以,这里第一个{}
匹配和第二个{}
项目只有那个值。
"fieldname":{ $exists: true}}
如果此值存在于某些文档中而不存在于其他使用条件中,例如匹配条件中,则取决于您的架构。
推荐阅读
- reactjs - 自定义钩子的反应目的
- firebase - 在flutter中找不到providerinstaller的本地模块描述符类
- css - 按钮上类似 3D 的悬停效果
- python - 使用 Python 压缩选择的 PDF 文件 - 减小大小
- java - 为什么 volatile 静态变量不刷新?
- typescript - 类型中缺少属性但在不同类型中需要?
- python - 如何将 RGBA 颜色传递给 Seaborn PairGrid
- postgresql - 使用 s3_uri 将 s3 csv 导入 PostgreSQL
- ios - SwiftUI 键盘弹出一次输入并不断出现和消失
- python - ValueError: Input 0 is in compatible with layer vggface_resnet50: expected shape=(None, 224, 224, 3), found shape=(None, 1, 224, 224, 3)