首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用node.js统计mongodb文档中键值对的个数?

如何使用node.js统计mongodb文档中键值对的个数?
EN

Stack Overflow用户
提问于 2018-01-28 18:30:33
回答 1查看 50关注 0票数 0

我的文档如下所示:

代码语言:javascript
复制
{
    "Erow1": "funnnyyyy hahaha",
    "Erow2": "Prefer a public role",
    "Erow3": "Can sometimes be easily distracted",
    "Erow4": "I'm awesome"
}

我需要知道文档中元素的数量。例如,这里有4个键/值对。我在nodejs服务器上检索文档,如下所示

代码语言:javascript
复制
    app.get("/editMBTI", function editMBTIFunc(req, res)
{ 
    MongoClient.connect(url, function (err, client) {
        assert.equal(null, err);
        console.log("Connected Successfully to the Database server");
        const db = client.db(dbName);
        //getting the whole collection of MBTI sets
        var cursor= db.collection("mbti_testcontent").find();
        cursor.toArray(function (err, doc) {
            assert.equal(err, null);
            console.log(doc[0]);
            // get the count of the key-value pairs present in doc[0] here.    
        });
    });
});
EN

回答 1

Stack Overflow用户

发布于 2018-01-28 18:45:19

您可以使用聚合框架来做到这一点:

代码语言:javascript
复制
db.col.aggregate([
    { 
        $project: {
            numberOfKeys: {
                $let: { 
                    vars: { array: { $objectToArray: "$$ROOT" } },
                    in: { $add: [{ $size: "$$array" }, -1] }
                }
            }
        }
    }
])

对于每个文档,我们都要进行一个投影,它将返回_id和一些键。使用的运算符:

  • $let定义临时长度变量包含整个文档中的所有键和值($$ROOT是表示整个文档的特殊变量),为了获得这些键和值,我们使用$objectToArray
  • $size度量数组的大小(长度),如果不想将其包含在结果

中,我们还需要减去表示_id的1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48485345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档