标签: aggregation-framework

Mongoid聚合$匹配Date对象不起作用?

我有一个具有以下结构的集合中的用户文档:

{ "_id" : ObjectId( "4fb54ef46d93b33b21003951" ),
  "activities" : [ 
    { "id" : ObjectId( "4fd66f9001e7fe9f03000065" ),
      "type" : "checkin",
      "date_time_created" : Date( 1339453328000 )}, 
    { "date_time_created" : Date( 1337351732000 ),
      "date_time_updated" : Date( 1337351952635 ),
      "id" : ObjectId( "4fb65e346d93b3fe77000000" )}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我可以根据日期轻松查询这些文档:

User.where( 
  :activities => { 
    '$elemMatch' => {
      :date_time_created => { '$gte' => start_date, '$lt' => end_date }
    }
  } 
).length
Run Code Online (Sandbox Code Playgroud)

根据日志:

MOPED:127.0.0.1:27017 COMMAND database = db command = {:count =>"users",:query => {"activities"=> {"$ elemMatch"=> {"date_time_created"=> {"$ gte" …

ruby ruby-on-rails mongodb moped aggregation-framework

0
推荐指数
1
解决办法
3138
查看次数

Mongo聚合嵌套数组

我有一个具有以下结构的mongo集合

{
    "userId" : ObjectId("XXX"),
    "itemId" : ObjectId("YYY"),
    "resourceId" : 1,
    "_id" : ObjectId("528455229486ca3606004ec9"),
    "parameter" : [
        {
            "name" : "name1",
            "value" : 150,
            "_id" : ObjectId("528455359486ca3606004eed")
        },
        {
            "name" : "name2",
            "value" : 0,
            "_id" : ObjectId("528455359486ca3606004eec")
        },
        {
            "name" : "name3",
            "value" : 2,
            "_id" : ObjectId("528455359486ca3606004eeb")
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

可以有多个文档具有相同的'useId'和不同的'itemId',但参数在所有文档中都具有相同的键/值对.

我想要完成的是为每个唯一的"userId"返回聚合参数"name1","name2"和"name3"而忽略'itemId'.所以每个用户的最终结果都是这样的:

{
  "userId" : ObjectId("use1ID"),
  "name1" : (aggregatedValue),
  "name2" : (aggregatedValue),
  "name3" : (aggregatedVAlue) 
},
{
  "userId" : ObjectId("use2ID"),
  "name1" : (aggregatedValue),
  "name2" : (aggregatedValue),
  "name3" : …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

0
推荐指数
1
解决办法
1万
查看次数

获取每个用户收集的最新文档

我需要为集合中的每个用户获取集合中的最新文档。例如,假设我有这样的数据:

[
    { user: "bob", time: ISODate("Sat, 24 Mar 2012 05:52:21 +0000"), value: "a" },
    { user: "bob", time: ISODate("Sun, 25 Mar 2012 05:52:21 +0000"), value: "b" },
    { user: "joe", time: ISODate("Sat, 24 Mar 2012 05:52:21 +0000"), value: "c" },
    { user: "bob", time: ISODate("Mon, 26 Mar 2012 05:52:21 +0000"), value: "d" },
    { user: "joe", time: ISODate("Sun, 25 Mar 2012 05:52:21 +0000"), value: "e" }
]
Run Code Online (Sandbox Code Playgroud)

查询后,我想找回这些条目:

[
    { user: "bob", time: ISODate("Mon, 26 Mar 2012 05:52:21 +0000"), …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

0
推荐指数
1
解决办法
694
查看次数

Mongodb - 查询深层嵌套数组

我已经在SO和谷歌上提出了类似的问题2天了.这是文件

{
    "rows" : [
        {
            "company" : "1 Gables Inn Bed & Breakfast",
            "address" : " 318 Quapaw Avenue Hot Springs",
            "a_url" : " AR 71901 Phone: 501-623-7576 ",
            "json" : {
                "results" : [
                    {
                        "address_components" : [
                            {
                                "long_name" : "318",
                                "short_name" : "318",
                                "types" : [ "street_number" ]
                            },
                            {
                                "long_name" : "Quapaw Avenue",
                                "short_name" : "Quapaw Ave",
                                "types" : [ "route" ]
                            },
                            {
                                "long_name" : "Hot Springs",
                                "short_name" : "Hot Springs",
                                "types" : [ …
Run Code Online (Sandbox Code Playgroud)

mongodb aggregation-framework

0
推荐指数
1
解决办法
1309
查看次数

在Spring Data Mongodb中使用$$ ROOT来检索整个文档

使用mongodb shell,我能够执行一个检索整个文档的聚合查询.为了做到这一点,我使用$$ ROOT变量.

db.reservations.aggregate([
   { $match : { hotelCode : "0360" } },
   { $sort : { confirmationNumber : -1 , timestamp: -1 } },
   { $group : {
       _id : "$confirmationNumber",
       timestamp :{$first : "$timestamp"},
       fullDocument :{$first : "$$ROOT"}
   }}
])
Run Code Online (Sandbox Code Playgroud)

它检索内容为confirmationNumber,timestamp,fullDocument的对象.fullDocument是整个文档.

我想知道是否可以对Spring-Data和聚合框架做同样的事情.

我的java代码是:

TypedAggregation<ReservationImage> aggregation = newAggregation(
   ReservationImage.class,
   match(where("hotelCode").is(hotelCode)),
   sort(Direction.DESC,"confirmationNumber","timestamp"),
   group("confirmationNumber").
     first("timestamp").as("timestamp").
     first("$$ROOT").as("reservationImage"));
  List<myClass> items = mongoTemplate.aggregate(
    aggregation, 
    myClass.class).getMappedResults();
Run Code Online (Sandbox Code Playgroud)

错误是:org.springframework.data.mapping.PropertyReferenceException:找不到类型myClass的属性$$

你有什么想法?

谢谢.

java mongodb spring-data aggregation-framework

0
推荐指数
2
解决办法
2764
查看次数

MongoDb:从查询中的两个数组中查找公共元素

假设我们在数据库中有以下结构的记录。

{
  "_id": 1234,
  "tags" : [ "t1", "t2", "t3" ]
}
Run Code Online (Sandbox Code Playgroud)

现在,我想检查数据库是否包含带有数组中指定的任何标签的记录 tagsArray which is [ "t3", "t4", "t5" ]

我了解$in运算符,但我不仅想知道数据库中的任何记录是否具有tagsArray中指定的任何标记,还想知道数据库中记录的哪个标记与tagsArray中指定的任何标记相匹配。(即在上述记录中为t3)

也就是说,我想比较两个数组(一个记录,另一个由我给定),并找出公共元素。

我需要将此表达式与查询中的许多表达式一起使用,因此投影运算符(例如$,$ elematch等)不会有太大用处。(或者有没有一种方法可以使用它而不必遍历所有记录?)

我想我可以使用$where运算符,但我认为这不是最好的方法。如何解决这个问题?

mapreduce mongodb aggregation-framework

0
推荐指数
1
解决办法
2443
查看次数

Mongo聚合查询提取最近7天的数据(node.js)

我有一大堆数据,我试图从Mongo(节点js)中提取数据以呈现一些图形.

我需要从几千个用户中提取最近7天的数据.每个用户的特定数据格式如下:

{
    "passedModules" : 
    [{
        "module" : ObjectId("53ea17dcac1d13a66fb6d14e"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }, 
    {
        "module" : ObjectId("53ec5c91af2792f1112554e8"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }, 
    {
        "module" : ObjectId("53ec5c5baf2792f1112554e6"),
        "date" : ISODate("2014-09-17T00:00:00.000Z")
    }]
}
Run Code Online (Sandbox Code Playgroud)

目前我有一组非常混乱的查询正在运行,但我相信这可以完全与Mongo一起完成吗?

基本上,我需要以动态的方式将所有条目从7天前提取到现在.

是否有一种尝试和测试方式以这种方式处理动态日期,更具体地说是使用mongo中的聚合框架?聚合框架的原因是我需要在之后对这些进行分组.

非常感谢

mongoose mongodb node.js aggregation-framework

0
推荐指数
1
解决办法
1805
查看次数

MongoDB聚合:在单个数组中检索数据

我有数百万个具有以下架构的文档:

{
   _id: '3fbwehgzgfwehgrqwegrqwer',
   someData: [0,1],
   moreData: {
       key: true
   } 
},

{
   _id: '24nj5h219ebwjfqwverqwer',
   someData: [2,3],
   moreData: {
       key: true
   } 
},
Run Code Online (Sandbox Code Playgroud)

我需要将someData数组组合成一个结果数组,例如:

{
    result: [
       [0,1],
       [2,3] 
    ]
}
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

0
推荐指数
1
解决办法
1431
查看次数

mongodb多个匹配条件并返回具有通用名称的文档

下面的数据存在于“ examSheet”集合中

{"name":"a1", "std":"9", "year":"2017", "exam":"halfyr_T", "marks":[{"p":"45","m":"40","c":"50"}]}
{"name":"a1", "std":"9", "year":"2017", "exam":"halfyr_P", "marks":[{"p":"40","m":"28","c":"38"}]}
{"name":"a1", "std":"9", "year":"2017", "exam":"annual_T", "marks":[{"p":"40","m":"50","c":"48"}]}
{"name":"a1", "std":"9", "year":"2017", "exam":"annual_P", "marks":[{"p":"45","m":"42","c":"18"}]}
{"name":"a2", "std":"9", "year":"2017", "exam":"halfyr_T", "marks":[{"p":"25","m":"30","c":"50"}]}
{"name":"a2", "std":"9", "year":"2017", "exam":"halfyr_P", "marks":[{"p":"41","m":"48","c":"28"}]}
{"name":"a2", "std":"9", "year":"2017", "exam":"annual_T", "marks":[{"p":"30","m":"48","c":"24"}]}
{"name":"a2", "std":"9", "year":"2017", "exam":"annual_P", "marks":[{"p":"35","m":"08","c":"38"}]}
{"name":"b1", "std":"10", "year":"2017", "exam":"halfyr_T","marks":[{"p":"45","m":"40","c":"50"}]}
{"name":"b1", "std":"10", "year":"2017", "exam":"halfyr_P", "marks": [{"p":"40","m":"28","c":"38"}]}
{"name":"b1", "std":"10", "year":"2017", "exam":"annual_T", "marks": [{"p":"40","m":"50","c":"48"}]}
{"name":"b1", "std":"10", "year":"2017", "exam":"annual_P", "marks": [{"p":"45","m":"42","c":"18"}]}
{"name":"b2", "std":"10", "year":"2017", "exam":"halfyr_T", "marks": [{"p":"25","m":"30","c":"50"}]}
{"name":"b2", "std":"10", "year":"2017", "exam":"halfyr_P", "marks": [{"p":"41","m":"48","c":"28"}]}
{"name":"b2", "std":"10", "year":"2017", "exam":"annual_T", …
Run Code Online (Sandbox Code Playgroud)

match multiple-conditions mongodb aggregation-framework

0
推荐指数
2
解决办法
6534
查看次数

Mongoose 5.x不允许传递大量运算符

汇总查询返回错误。

'猫鼬5.x不允许将大量操作员传递给Model.aggregate()。代替Model.aggregate({ $match }, { $skip }),做Model.aggregate([{ $match }, { $skip }])

我正在使用mongoose和MongoDb版本

“ mongoose”:“ ^ 5.5.4”,mongod版本:3.6.12

请建议我,我将非常感谢您。

javascript mongoose mongodb aggregation-framework

0
推荐指数
1
解决办法
1089
查看次数