mongodb - 添加子项存在字段的字段

时间:2017-01-27 12:47:22

标签: mongodb

以下是我的MongoDb结构示例:

记录1:

{
    "id" : 1,
    "children" : [ 
        {
            "childID" : 1,
            "fruitList" : "orange" <-----
        }, 
        {
            "childID" : 2,
        }, 
        {
            "childID" : 3,
            "fruitList" : "apple" <-----
        },
        {
         .
         .
         .
        }
    ]
}

记录2:

{
    "id" : 2,
    "children" : [ 
        {
            "childID" : 1,
        }, 
        {
            "childID" : 2,
            "fruitList" : "" <----- it's empty
        }, 
        {
            "childID" : 3,
        },
        {
         .
         .
         .
        }
    ]
}

我想进行查询更新..查询必须添加“hasFruit”=&gt;至少有一个孩子有果实的记录“真实”......我的意思是,记录中有一个字段“fruitList”存在,并且该字段的值不为空

所以,记录将是:

记录1:

{
    "id" : 1,
    "hasFruit" : true <-----
    "children" : [ 
        {
            "childID" : 1,
            "fruitList" : "orange"
        }, 
        {
            "childID" : 2,
        }, 
        {
            "childID" : 3,
            "fruitList" : "apple"
        },
        {
         .
         .
         .
        }
    ]
}

记录2:

{
    "id" : 2,
    "hasFruit" : false <-----
    "children" : [ 
        {
            "childID" : 1,
        }, 
        {
            "childID" : 2,
            "fruitList" : ""
        }, 
        {
            "childID" : 3,
        },
        {
         .
         .
     .
        }
    ]
}

谢谢

1 个答案:

答案 0 :(得分:0)

尝试以下查询。它过滤记录,其中至少有一个子项,其中fruitList存在且不是空字符串。

db.getCollection('test').update(
  {"children.fruitList" : {$exists: true, $ne: ""}}, 
  {$set: {hasFruit: true}}, 
  {multi: true}
)