我正在尝试从集合中的数组中提取数据,代码的提取如下所示:
> 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 。它应该通过索引检索吗?
感谢您的帮助
答案 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()
。