Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用MongoCollections updateOne方法更新/插入嵌套数组?_Java_Arrays_Mongodb_Mongo Collection - Fatal编程技术网

Java 如何使用MongoCollections updateOne方法更新/插入嵌套数组?

Java 如何使用MongoCollections updateOne方法更新/插入嵌套数组?,java,arrays,mongodb,mongo-collection,Java,Arrays,Mongodb,Mongo Collection,下面是该文档的一个简化示例 { "username":"someUsername", "bank":[ { "item_id":45, "item_amount":10 }, { "item_id":45, "item_amount":10 } ] } 如何将item_id=45的item_amount值增加3?如果数组中不存在item_id

下面是该文档的一个简化示例

{  
   "username":"someUsername",
   "bank":[  
      {  
         "item_id":45,
         "item_amount":10
      },
      {  
         "item_id":45,
         "item_amount":10
      }
   ]
}
如何将item_id=45的item_amount值增加3?如果数组中不存在item_id=45,它将被添加,它的item_amount值将为3


我相信MongoCollection的updateOne是使用java处理mongodb的最新方式。我宁愿用那种方法,我就是想不出正确的方法。我用旧的更新方法找到了很多答案,所以请不要引用这些答案,除非我遗漏了一些有用的东西。

请尝试以下代码片段;0

db.items.find({'bank.item_id': 45}).forEach(function(myDoc) {
    var count_action = {};
    if (is_itemid_exist(45,myDoc.bank,'item_id')) {
        count_action['bank.$.item_amount'] =3; 
        db.items.update(
        {'bank.item_id': 45},
        {
            $inc: count_action 
        });
    } else {
        db.items.insert({'bank': [{'item_id':45,' item_amount':3}]})
    }
});
函数为_itemid_exist,用于上述查询-

function is_itemid_exist(value, search,key) {
        if (!search || (search.constructor !== Array && search.constructor !== Object)) {
            return false;
        }
        for (var i = 0; i < search.length; i++) {
            if (search[i].key === value) {
                return true;
            }
        }
        return false;
    }

谢谢

我觉得这就像是javascript代码。我需要java.query的语法为mongodb,您可以根据您的useBy查询更新函数“is_itemid_exist”,您是说QueryBuilder吗?因为我在mongodb的3.0Java驱动程序api中没有看到查询类。但也许我是瞎子?