相关疑难解决方法(0)

使用MongoDB更新嵌套数组

我试图更新嵌套数组中的值,但无法使其工作.

我的目标是这样的

 {
    "_id": {
        "$oid": "1"
    },
    "array1": [
        {
            "_id": "12",
            "array2": [
                  {
                      "_id": "123",
                      "answeredBy": [],
                  },
                  {
                      "_id": "124",
                      "answeredBy": [],
                  }
             ],
         }
     ]
 }
Run Code Online (Sandbox Code Playgroud)

我需要将值推送到"answersBy"数组.

在下面的例子中,我尝试将"success"字符串推送到"123 _id"对象的"answersBy"数组,但它不起作用.

callback = function(err,value){
     if(err){
         res.send(err);
     }else{
         res.send(value);
     }
};
conditions = {
    "_id": 1,
    "array1._id": 12,
    "array2._id": 123
  };
updates = {
   $push: {
     "array2.$.answeredBy": "success"
   }
};
options = {
  upsert: true
};
Model.update(conditions, updates, options, callback);
Run Code Online (Sandbox Code Playgroud)

我找到了这个链接,但它的答案只说我应该使用类似对象的结构而不是数组.这不适用于我的情况.我真的需要我的对象嵌套在数组中

如果你能在这里帮助我会很棒.我花了好几个小时来搞清楚这一点.

先感谢您!

javascript mongoose mongodb node.js mongodb-query

30
推荐指数
2
解决办法
2万
查看次数

多次使用位置`$`运算符来更新嵌套数组

这个问题是密切相关的这一个,我会考虑在NoSQL的情况下给出关于架构设计的意见,但我很好奇,想明白这一点:

实际问题

假设您有以下文档:

    _id : 2      abcd
    name : 2     unittest.com
    paths : 4    
        0 : 3    
            path : 2     home
            queries : 4      
                0 : 3    
                    name : 2     query1
                    url : 2      www.unittest.com/home?query1
                    requests: 4

                1 : 3    
                    name : 2     query2
                    url : 2      www.unittest.com/home?query2
                    requests: 4
Run Code Online (Sandbox Code Playgroud)

基本上,我想知道

  1. 如果可以在涉及"嵌套度"大于1的数组/文档结构的更新方案中多次使用MongoDB的位置$运算符(详细信息),或者换句话说不同:

    { <update operator>: { "paths.$.queries.$.requests" : value } }(不起作用)

    而不是"只"能够使用$ 一次顶级数组并绑定为"更高级别"上的数组使用显式索引:

    { <update operator>: { "paths.$.queries.0.requests" : …

r mongodb nosql rmongodb

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

MongoDB:使用2个嵌套数组更新文档中的平均值

我有以下MongoDB文档:

{
    _id: ObjectId(),
    company_name: "Name",
    registered: 2/21/2015 2:00,
    trucks: [
        {
            truck_id: "TEB7622",
            weight: 88.33,
            capacity: 273.333,
            length: 378.333,
            width: 377.383,
            average_grade: 2.5,
            grades: [
                {
                    grade_number: 4,
                    timestamp: 2/21/2015 2:00
                }
            ]
        },
        {
            truck_id: "TEB5572",
            weight: 854.33,
            capacity: 2735.333,
            length: 378.333,
            width: 37.383,
            average_grade: 3.8,
            grades: [
                {
                    grade_number: 4,
                    timestamp: 2/21/2015 2:00
                }
            ]
        }
    ]

}
Run Code Online (Sandbox Code Playgroud)

我想average_grade通过添加所有的更新每辆卡车grade_numbers.我遇到的问题是grade_numbers我试图添加的是数组中的数组.我试过$unwind用来放松卡车和等级阵列.

这是我尝试过的查询:

db.col.aggregate([ 
   {$unwind: "$trucks"}, 
   {$unwind: "$trucks.grades"}, 
   { $project: { 
      "_id": …
Run Code Online (Sandbox Code Playgroud)

arrays mongodb mongodb-query

6
推荐指数
1
解决办法
1071
查看次数

标签 统计

mongodb ×3

mongodb-query ×2

arrays ×1

javascript ×1

mongoose ×1

node.js ×1

nosql ×1

r ×1

rmongodb ×1