Как посчитать комментарий в Mongoose - PullRequest
1 голос
/ 26 марта 2020

Я новичок в Nodejs и Mongosee, это просто в Php и Mysql со многими решениями, но не знаю, как запросить в Mongosee и Nodejs Вот мой код Post Schema

import mongoose from 'mongoose';
const postSchema = new mongoose.Schema({
  title: String,
  description: String
});
const postModel = mongoose.model('post', postSchema);
export default postModel;

Схема комментариев

import mongoose from 'mongoose';
const commentSchema = new mongoose.Schema({
  postId: {
    ref: 'post',
    type: mongoose.Schema.Types.ObjectId
  },
  title: String,
  content: {
    type: String,
    required: true
  }
});
const commentModel = mongoose.model('comment', commentSchema);
export default commentModel;

Как запросить результат как

{
"_id": "5e7c7217068570095363ecb0",
"title": "Test Post ",
"description": "My description",
"__v": 0,
"comment_count": 10,
},
{
"_id": "5e7c7218068570095363ecb1",
"title": "Test Post ",
"description": "My description",
"__v": 0,
"comment_count": 0,
}

1 Ответ

2 голосов
/ 26 марта 2020

Вы можете использовать ниже агрегации

const posts = await Post.aggregate([
  {
    $lookup: {
      from: "comments",
      let: { postId: "$_id" },
      pipeline: [{ $match: { $expr: { $eq: ["$$postId", "$postId"] } } }],
      as: "comment_count"
    }
  },
  { $addFields: { comment_count: { $size: "$comment_count" }}}
]);
...