标签: nosql-aggregation

如何在聚合管道mongodb中使用$update/$set运算符?

我正在尝试根据某些条件更新name我的集合中调用的字段。coll1我首先创建了一个聚合管道,根据我的标准过滤出文档。

var local_filter = { "$or" :[ 
                                          {'fullText': {'$eq': "404 Error"}},
                                          {'fullText': {'$eq': "Unknown Error"}},
                                          {'fullText': {'$eq': "503 Error"}},
                                          {'fullText': {'$eq': "400 Error"}},
                                          {'fullText': {'$eq': "500 Error"}},
                                          {'fullText': {'$eq': "Read timed out"}},
                                          {'fullText': {'$eq': "410 Error"}},
                                          {'fullText': {'$eq': "403 Error"}},
                                          {"fullText": {'$eq':""}},
                              ]}

var foreign_filter= { "$and" :[
                              {'matchingrecords.Text': {'$ne': "404 Error"}},
                              {'matchingrecords.Text': {'$ne': "Unknown Error"}},
                              {'matchingrecords.Text': {'$ne': "503 Error"}},
                              {'matchingrecords.Text': {'$ne': "400 Error"}},
                              {'matchingrecords.Text': {'$ne': "500 Error"}},
                              {'matchingrecords.Text': {'$ne': "Read timed out"}},
                              {'matchingrecords.Text': {'$ne': "410 …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query nosql-aggregation aggregation-framework

4
推荐指数
1
解决办法
8046
查看次数

如何在 MongoDB 聚合管道中执行嵌套“连接”(连接 3 个或更多集合)?

假设 MongoDB 中有 3 个假设的集合:customersordersorderItems

每个客户有多个订单,每个订单有多个订单项目。

以下是这 3 个集合的一些示例数据:

顾客

[
    {
        customer_id: 1,
        name: "Jim Smith",
        email: "jim.smith@example.com"
    },
    {
        customer_id: 2,
        name: "Bob Jones",
        email: "bob.jones@example.com"
    }
]
Run Code Online (Sandbox Code Playgroud)

命令

[
    {
        order_id: 1,
        customer_id: 1
    },
    {
        order_id: 2,
        customer_id: 1
    }
]
Run Code Online (Sandbox Code Playgroud)

订单项目

[
    {
        order_item_id: 1,
        name: "Foo",
        price: 4.99,
        order_id: 1
    },
    {
        order_item_id: 2,
        name: "Bar",
        price: 17.99,
        order_id: 1
    },
    {
        order_item_id: 3,
        name: "baz",
        price: 24.99, …
Run Code Online (Sandbox Code Playgroud)

mongodb nosql nosql-aggregation aggregation-framework

4
推荐指数
1
解决办法
1715
查看次数

使用投影过滤嵌套数组而不使用展开

我的 collection1 在项目字段中保存了 collection2 的 _ids ,如下所示:

    {
        "name": "adafd",
        "employeeId": "employeeId",
        "locations": [
            "ObjectId(adfaldjf)",
            "ObjectId(adfaldjf)",
            "ObjectId(adfaldjf)",
            "ObjectId(adfaldjf)",
            "ObjectId(adfaldjf)",
            "ObjectId(adfaldjf)"
        ]
    }
Run Code Online (Sandbox Code Playgroud)

集合2如下

"collection2": [
    {   
        "location": "india",
        "states": [
            {
                "stateCode": "TN",
                    "districts": {
                        "cities": [
                            {
                                "code": 1,
                                "name": "xxx"
                            },
                            {
                                "code": 4,
                                "name": "zzz"
                            },
                            {
                                "code": 6,
                                "name": "yyy"
                            }
                        ]
                    }
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

我试图在查找后过滤 collection2 内的嵌套数组,如下所示:

    db.collection.aggregate([
        {
            $lookup: {
                from: "collection2",
                localField: "locations",
                foreignField: "_id",
                as: "locations"
            }
        },
        {
            $match: …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query nosql-aggregation aggregation-framework dynamodb-queries

3
推荐指数
1
解决办法
1968
查看次数

MongoDB Count()与聚合

我已经在mongo中使用了聚合,我知道在分组计数等方面的性能优势.但是,mongo在计算集合中所有文档的这两种方式上的性能有何不同?:

collection.aggregate([
  {
    $match: {}
  },{
    $group: {
      _id: null, 
      count: {$sum: 1}
    }
}]);
Run Code Online (Sandbox Code Playgroud)

collection.find({}).count()
Run Code Online (Sandbox Code Playgroud)

更新:第二种情况:假设我们有这样的样本数据:

{_id: 1, type: 'one', value: true}
{_id: 2, type: 'two', value: false}
{_id: 4, type: 'five', value: false}
Run Code Online (Sandbox Code Playgroud)

aggregate():

var _ids = ['id1', 'id2', 'id3'];
var counted = Collections.mail.aggregate([
  {
    '$match': {
      _id: {
        '$in': _ids
      },
      value: false
    }
  }, {
    '$group': {
      _id: "$type",
      count: {
        '$sum': 1
      }
    }
  }
]);
Run Code Online (Sandbox Code Playgroud)

count():

var counted …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query nosql-aggregation

2
推荐指数
1
解决办法
2815
查看次数

MongoDB 根据条件按计数分组

我有以下 mongo DB 架构:

 {
    "_id" : "5b76c3c037548390fdb5b40e",
    "userId" : "4601",
    "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
    "rStatus" : "started",
},
{
    "_id" : "5b76c3c037548390fdb5b40e",
    "userId" : "13",
    "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
    "rStatus" : "completed",
},
........
Run Code Online (Sandbox Code Playgroud)

需要通过修改日期和 rStatus 字段的计数来获取数据组,例如

{
    modified:"2018-08-21",
    count :{"completed":1,"ongoing":4}
},
{
    modified:"2018-07-23",
    count :{"completed":2,"ongoing":5}
},
Run Code Online (Sandbox Code Playgroud)

我正在使用 $group 但它按修改日期计数,而不是按内部键的值。

mongoose mongodb nosql mongodb-query nosql-aggregation

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