только вернуть документ _id на mongoose .find ()

1

Я обновляю 100 документов каждую секунду, нажимая новые данные в массив в своем документе. Чтобы получить документ, к которому я собираюсь добавить данные, я использую .find().limit(1) mongoose .find().limit(1) и возвращаю весь документ. Он работает нормально.

Чтобы помочь с некоторыми проблемами памяти и процессора, у меня есть, мне было интересно, как я могу find() чтобы возвращать только id документа, чтобы я мог использовать это для $ push или $ set new data.

Благодарю.

  • 0
    Вторым параметром функции find является строка, указывающая, какие поля документа включать или исключать. Чтобы включить только _id используйте collection.find({}, '_id') .
Теги:
mongoose

2 ответа

1
Лучший ответ

Вы хотите использовать Projection, чтобы точно рассказать свой запрос о том, что вы хотите от своих объектов.

_id всегда включается, если вы не говорите ему об этом.

readings = await collection
.find({
    name: "Some name you want"
})
.project({
    _id: 1 // By default
})
.toArray();
  • 1
    collection.find({}, '_id') недостаточно?
  • 0
    @alexmac Я думаю, что это тоже работает (хотя второй параметр, возможно, должен быть объектом), но мне нравится .project() так как он более явный.
Показать ещё 5 комментариев
0

Вы можете использовать distinct метод, чтобы получить массив _id для вашего запроса.

Следуйте этому вопросу

Ещё вопросы

Сообщество Overcoder
Наверх
Меню