是否有更好的方法来仅检索模型值?

时间:2018-12-14 05:25:32

标签: mongodb mongoose aggregation-framework

电影模型的属性watched带有value,即{watched: 12345} 电影模型也引用用户模型。

如果我想检索所有id(“监视的”值),则必须执行以下类似的操作:

  const res = await Movie.find({ user: user.id }).select('watched -_id')
  const watched = res.map(w => w.watched)
  console.log(watched) // [123343, 34546, 45656]

是否有更好的方法来仅检索模型值?

1 个答案:

答案 0 :(得分:0)

您可以使用以下汇总

const watched = await Movie.aggregate([
  { "$match": { "user": mongoose.Types.ObjectId(user.id) }},
  { "$group": {
    "_id": null,
    "watchedIds": { "$push": "$watched" }
  }}
])

console.log(watched[0].watchedIds) // [123343, 34546, 45656]

但是我可以说在您使用的查询和上面的查询中没有性能问题。