如何从MongoDB中获取“_id”字段find()

时间:2018-02-20 00:24:35

标签: mongodb

我希望只返回mongo中与find()查询匹配的文档ID。

我知道我可以传递一个对象来排除或包含在结果集中,但是我找不到返回_id字段的方法。

我的思维过程正在返回,这一点信息会更有效率(我的用例不需要其他文档数据ObjectId)。

我期望工作的示例查询是:

collection.find({}, { _id: 1 }).toArray(function(err, docs) {
    ...
}

然而,这会返回整个文档,而不仅仅是_id字段。

4 个答案:

答案 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) {
    ...
}