我希望只返回mongo中与find()
查询匹配的文档ID。
我知道我可以传递一个对象来排除或包含在结果集中,但是我找不到返回_id
字段的方法。
我的思维过程正在返回,这一点信息会更有效率(我的用例不需要其他文档数据ObjectId
)。
我期望工作的示例查询是:
collection.find({}, { _id: 1 }).toArray(function(err, docs) {
...
}
然而,这会返回整个文档,而不仅仅是_id
字段。
答案 0 :(得分:0)
你只需要使用投影来找到你想要的东西。
collection.find({filter criteria here}, {foo: 0, bar: 0, _id: 1});
由于我不知道您的文档集是什么样的,这就是我能为您做的一切。例如foo: 0
是排除此属性。
答案 1 :(得分:0)
我发现直接使用光标对象我可以指定所需的投影。调用mongodb
时,npm上的toArray()
包返回整个文档,而不管初始find()
中指定的投影如何。修复了下面的工作示例,它满足了我只需获取_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
});
答案 2 :(得分:0)
由于_id
根据定义是唯一的,因此您可以使用distinct
获取所有文档的_id
值数组:
collection.distinct('_id', function(err, ids) {
...
}
答案 3 :(得分:0)
你可以这样做
collection.find({},'_id').toArray(function(err, docs) {
...
}