首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计数对象中的对象(没有计数变量索引)

如何计数对象中的对象(没有计数变量索引)
EN

Stack Overflow用户
提问于 2014-10-24 06:27:28
回答 1查看 164关注 0票数 0

我在mongodb中存储了以下模型:

代码语言:javascript
复制
{
    "_id": (MongoId)
    "user": "X",
    "field-name-1":{
        "obj-1": 12345,
        "obj-2": 54321,
        "obj-3": 67890,
        (...)
    },
    "field-name-2:{
        "obj-1": {"foo":"bar", "bar":"foo"},
        "obj-2": {"foo":"bar2", "bar":"foo2"},
        (...)
    }
}

如何找到“字段名-1”中包含5个以上对象的区域?“字段名-2”是一样的吗?

我不能使用变量来计算对象的数量,因为我经常在“字段名称-1”/“字段名-2”中插入值。

谢谢。

已经尝试过(但没有成功):

代码语言:javascript
复制
db.summoners.find({$where: "this.['field-name-1'].length > 5"})
db.summoners.find({$where: "['field-name-1'].length > 5"})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 13:43:07

在这种情况下,应该对$where进行限定:

代码语言:javascript
复制
function findMyDocument(key, value) {
    var f = this[key];
    if (typeof f != "object" || typeof value != "number") {
        return false;
    }
    var count = 0;
    for (var x in f) {
        if (++count > value) {
            return true;
        }
    }
    return false;
}

// store above function to database for invoking
db.system.js.insert({_id:"findMyDocument", value: findMyDocument});

// apply here
db.summoners.find({$where: "findMyDocument.call(this, 'field-name-1', 5);"});
db.summoners.find({$where: "findMyDocument.call(this, 'field-name-2', 5);"});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26542583

复制
相关文章

相似问题

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