查询与mongodb中的条件匹配的文档及其所有子文档(使用spring)

纳斯曼

我有一个MongoDB,用于存储来自不同传感器的数据。它具有以下结构:

 {
     "_id" : 1,
     "sensorName" : "Heart Rate",
     "samplePeriod" : 1000,
     "data" : [
             {
                 "timestamp" : NumberLong("1483537204046"),
                 "dataPoints" : [ 68 70 ]
             },
             {
                 "timestamp" : NumberLong("1483537206046"),
                 "dataPoints" : [ 68 70 ]
             }
     ]
}
{
    "_id" : 2,
    "sensorName" : "Ambient Light",
    "samplePeriod" : 500,
    "data" : [
            {
                "timestamp" : NumberLong("1483537204058"),
                "dataPoints" : [ 56, 54, 54, 54 ]
            },
            {
                "timestamp" : NumberLong("1483537206058"),
                "dataPoints" : [ 56, 54, 54, 54 ]
            }
    ]
}

现在,例如,我需要“心率”-包含所有字段和“数据”字段的文档-匹配条件“ 1483537204000和1483537214000之间的时间戳记”的子文档。

我已经在另一个问题中的mongo shell中获得了有关如何执行此操作的答案。参见以下代码:

aggregate([{
    $match: {
        "_id": 1
    }
}, {
    "$project": {
        "_id": 1,
        "sensorName": 1,
        "samplePeriod": 1,
        "data": {
            "$filter": {
                "input": "$data",
                "as": "result",
                "cond": {
                    $and: [{
                        $gte: ["$$result.timestamp", 1483537204000]
                    }, {
                        $lte: ["$$result.timestamp", 1483537214000]
                    }]
                }
            }
        }
    }
}])

但是如何在java spring-data中做到这一点呢?似乎在spring-data中没有像$ filter这样的东西。有解决方法吗?

反之,$ filter的效率如何?您能想到在mongodb中构造此类数据的更有效/更实用的方法吗?

提前致谢!

s7vr

您需要利用spring mongo数据依赖项中提供的MongoTemplate。当前发行版中没有对$ filter的现成支持。利用AggressionExpression。在项目中包括以下投影。使用1.8.5 Spring mongo数据版本。

Aggregation aggregation = newAggregation(
        match(Criteria.where("_id").is(1)),
        project( "_id", "sensorName", "samplePeriod").and(new AggregationExpression() {
            @Override
            public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
                DBObject filter = new BasicDBObject("input", "$data").append("as", "result").append("cond",
                        new BasicDBObject("$and", Arrays.<Object> asList(new BasicDBObject("$gte", Arrays.<Object> asList("$$result.timestamp", 1483537204000L)),
                                new BasicDBObject("$lte", Arrays.<Object> asList("$$result.timestamp", 1483537214000L)))));
                return new BasicDBObject("$filter", filter);
            }
        }).as("data")
);

List<BasicDBObject> dbObjects = monoTemplate.aggregate(aggregation, "collectionname", BasicDBObject.class).getMappedResults();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询与mongodb中的条件匹配的文档及其所有子文档

来自分类Dev

mongodb $ elem匹配查询返回所有子文档

来自分类Dev

mongodb从所有文档中获取所有子文档

来自分类Dev

查找所有子文档都符合条件的 MongoDB 文档

来自分类Dev

在MongoDB中查找子文档中的两个条件都为真的所有文档

来自分类Dev

当所有$和条件都匹配相同的子文档时,MongoDB的find()是否匹配?

来自分类Dev

删除Mongo文档及其所有参考?

来自分类Dev

删除用户及其所有文档 Firestore

来自分类Dev

在icloud上禁用文档文件夹及其所有子文件夹的备份?

来自分类Dev

在MongoDB中对与子数组条件匹配的文档进行计数

来自分类Dev

一个MongoDB find()是否在所有$和条件都匹配同一子文档时匹配?

来自分类Dev

Group by使用pymongo仅返回mongodb中的第一个匹配文档,如何检索所有匹配的文档?

来自分类Dev

MongoDb子文档查询是否遵循OR条件?

来自分类Dev

MongoDB:从单个文档中查找所有匹配的数组元素

来自分类Dev

在Mongodb中查询集合的子文档中的子文档

来自分类Dev

我可以查询mongodb中的所有文档吗?

来自分类Dev

Mongodb查询以计算所有文档中的不同值

来自分类Dev

使用Shell修改文件夹及其所有子文件夹中的文件

来自分类Dev

MongoDB查询-子文档

来自分类Dev

查找所有符合条件的子文档

来自分类Dev

使用Spring MongoOperations根据查询获取所有文档

来自分类Dev

使用Spring MongoOperations根据查询获取所有文档

来自分类Dev

mongodb查找子文档的所有值

来自分类Dev

MongoDB-导出-导出与特定字段匹配的所有文档-文件中列出的文档

来自分类Dev

在作为子文档的数组元素中检索所有符合条件的文档

来自分类Dev

如何在MongoDB集合中的所有子文档上有条件地设置新字段

来自分类Dev

通过单个查询在文档和子文档中搜索Mongodb

来自分类Dev

查询Mongodb的子-子文档

来自分类Dev

匹配所有查询而不返回所有文档

Related 相关文章

  1. 1

    查询与mongodb中的条件匹配的文档及其所有子文档

  2. 2

    mongodb $ elem匹配查询返回所有子文档

  3. 3

    mongodb从所有文档中获取所有子文档

  4. 4

    查找所有子文档都符合条件的 MongoDB 文档

  5. 5

    在MongoDB中查找子文档中的两个条件都为真的所有文档

  6. 6

    当所有$和条件都匹配相同的子文档时,MongoDB的find()是否匹配?

  7. 7

    删除Mongo文档及其所有参考?

  8. 8

    删除用户及其所有文档 Firestore

  9. 9

    在icloud上禁用文档文件夹及其所有子文件夹的备份?

  10. 10

    在MongoDB中对与子数组条件匹配的文档进行计数

  11. 11

    一个MongoDB find()是否在所有$和条件都匹配同一子文档时匹配?

  12. 12

    Group by使用pymongo仅返回mongodb中的第一个匹配文档,如何检索所有匹配的文档?

  13. 13

    MongoDb子文档查询是否遵循OR条件?

  14. 14

    MongoDB:从单个文档中查找所有匹配的数组元素

  15. 15

    在Mongodb中查询集合的子文档中的子文档

  16. 16

    我可以查询mongodb中的所有文档吗?

  17. 17

    Mongodb查询以计算所有文档中的不同值

  18. 18

    使用Shell修改文件夹及其所有子文件夹中的文件

  19. 19

    MongoDB查询-子文档

  20. 20

    查找所有符合条件的子文档

  21. 21

    使用Spring MongoOperations根据查询获取所有文档

  22. 22

    使用Spring MongoOperations根据查询获取所有文档

  23. 23

    mongodb查找子文档的所有值

  24. 24

    MongoDB-导出-导出与特定字段匹配的所有文档-文件中列出的文档

  25. 25

    在作为子文档的数组元素中检索所有符合条件的文档

  26. 26

    如何在MongoDB集合中的所有子文档上有条件地设置新字段

  27. 27

    通过单个查询在文档和子文档中搜索Mongodb

  28. 28

    查询Mongodb的子-子文档

  29. 29

    匹配所有查询而不返回所有文档

热门标签

归档