如何取回“只”字_id";MongoDB find()中的字段
我只想返回mongo中与如何取回“只”字_id";MongoDB find()中的字段,mongodb,Mongodb,我只想返回mongo中与find()query匹配的文档id 我知道我可以在结果集中传递要排除或包含的对象,但是我找不到只返回\u id字段的方法 我的思维过程只是返回一点信息,这将更加有效(我的用例不需要其他文档数据,只需要ObjectId) 我希望能够使用的一个查询示例是: collection.find({}, { _id: 1 }).toArray(function(err, docs) { ... } 但是,这将返回整个文档,而不仅仅是\u id字段。您只需要使用投影来查找所
find()
query匹配的文档id
我知道我可以在结果集中传递要排除或包含的对象,但是我找不到只返回\u id
字段的方法
我的思维过程只是返回一点信息,这将更加有效(我的用例不需要其他文档数据,只需要ObjectId
)
我希望能够使用的一个查询示例是:
collection.find({}, { _id: 1 }).toArray(function(err, docs) {
...
}
但是,这将返回整个文档,而不仅仅是
\u id
字段。您只需要使用投影来查找所需内容
collection.find({filter criteria here}, {foo: 0, bar: 0, _id: 1});
因为我不知道你的文档集是什么样子,所以我只能为你做这些<例如,code>foo:0就是排除此属性。我发现直接使用游标对象可以指定所需的投影。调用
toArray()
时,npm上的mongodb
包将返回整个文档,而不管在初始find()
中指定的投影如何。修复了下面的工作示例,该示例满足了我仅获取\u id
字段的要求
示例文件:
{
_id: new ObjectId(...),
test1: "hello",
test2: "world!"
}
工作投影
var cursor = collection.find({});
cursor.project({
test1: 0,
test2: 0
});
cursor.toArray(function(err, docs) {
// Importantly the docs objects here only
// have the field _id
});
因为
\u id
根据定义是唯一的,所以可以使用来获取所有文档的\u id
值数组,如下所示:
collection.distinct('_id', function(err, ids) {
...
}
你可以这样做
collection.find({},'_id').toArray(function(err, docs) {
...
}
这就是我的想法,我需要事先知道所有文档属性。这很好,我只是觉得会有更好的方式来写。Thanks@fungus1487很高兴我能帮上忙,介意今天就到此为止吗?:)我会在一分钟后,当它让我很抱歉,这实际上没有工作。find上的
toArray()
生成一个光标,它返回的文档(无论投影如何)包括所有字段。我刚刚执行了这个:collection.find({},{field1:0,field2:0}).toArray(函数(err,docs){console.dir(docs[0]);}
和字段1和2都被打印出来了。你能看一下并编辑你的问题吗?我达到了16mb的文档限制啊,是的,有限制。:)