如何从数组中检索数据[Mongodb]

时间:2014-10-05 20:21:11

标签: arrays json mongodb

我正在尝试从集合中的数组中提取数据,代码的提取如下所示:

> db.nodes.findOne()
{
        "_id" : NumberLong(24060429),
        "_t" : "OsmNode",
        "uname" : "studerap",
        "uid" : 7260,
        "version" : 2,
        "changeset" : 634057,
        "timestamp" : ISODate("2007-11-27T11:18:58Z"),
        "tags" : [
                [
                        "created_by",
                        "almien_coastlines"
                ],
                [
                        "source",
                        "PGS"
                ]
        ],
        "tagKeys" : [
                "created_by",
                "source"
        ],
        "location" : [
                5.5442938804626465,
                -6.488432884216309
        ]
}

我实际想要从位置数组中检索的数据是 5.5442938804626465 。它应该通过索引检索吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

要从所有文档中提取数组的索引元素,您可以通过:

var index = 0, count = 1;
var cursor = db.nodes.find({}, {_id:1, location:{$slice:[index, count]}});

当然,您可以直接写信:

var cursor = db.nodes.find({}, {_id:1, location:{$slice:[0, 1]}});

var cursor = db.nodes.find({}, {_id:1, location:{$slice:1}});

然后,提取结果:

var results = [];
cursor.forEach(function(e) {
    results.push(e.location[0]);
});

顺便说一下,.find()返回一个游标;并且.findOne()返回一个文档,如果游标有文档,则相当于运行.find().next()