繁体   English   中英

如何在大数组字段mongodb上增加计数器

[英]How to increment the Counter on Bulk array field mongodb

我有一个像这样的数据集:

{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4875"),
        "fruit" : "APPLE",
        "count" : 0,
},
{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4876"),
        "fruit" : "MANGO",
        "count" : 0,
},
{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4877"),
        "fruit" : "BANANA",
        "count" : 0,
}

我想使计数器增加我已经知道的1。 我的问题是如何增加批量计数器的数量。

假设我有一个值是

array = ['APPLE', 'BANANA'];

现在,我只想增加数组中存在的那些元素的计数器。

因此,数组之后,期望的结果将是这样。

{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4875"),
        "fruit" : "APPLE",
        "count" : 1,
},
{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4876"),
        "fruit" : "MANGO",
        "count" : 0,
},
{
        "_id" : ObjectId("2q9abf6b3b758dbed05d4877"),
        "fruit" : "BANANA",
        "count" : 1,
}

注意:这只是一个基本示例。 数组最多可以容纳50个条目或更多。 什么是最好的方法。 我在使用Mongoose for MongoDB的Nodejs-Express Environment上。 任何帮助表示赞赏。

一种可能的方法是在数据库中查询包含与您拥有的数组中的任何值匹配的水果值的所有文档。 然后遍历返回的对象数组。

YourModel.find({fruit: { $in: yourArray }}, function(err, foundFruits){
    if (err){
        //handle error
    }
    foundFruits.forEach(function(fruit){
        //make all the changes you want to make here
        //for example, incrementing counter:
        fruit.counter += 1;
        fruit.save();
    });
});

请注意,如果您要做的只是增加计数器,而没有其他更改,那么您可以在查询中简单地使用update选项,或者如chridam建议的那样,使用$ inc选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM