如何计算对象内的对象(没有count var index)

时间:2014-10-24 06:27:28

标签: mongodb

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

{
    "_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"},
        (...)
    }
}

如何在" field-name-1"中找到包含5个以上对象的事件?对于" field-name-2"?

是否相同

我无法使用变量来计算对象的数量,因为我在" field-name-1" /" field-name-2"不断。

感谢。


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

db.summoners.find({$where: "this.['field-name-1'].length > 5"})
db.summoners.find({$where: "['field-name-1'].length > 5"})

1 个答案:

答案 0 :(得分:1)

在这种情况下,

$ where 应该是合格的:

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);"});
相关问题