mongodb 猫鼬完全加入数组

mongodb mongoose full join on array

我有两个 collections 我想预制一个 'join'。
第一个有参考的人是父母。
第二个叫做 child

这是 object 父母的样子:

{
    "_id": "id_123"
    "name": "name",
    "children": ["id_child_1", "id_child_2", ...]
}

model/par.js 看起来像这样:

const mongoose = require('mongoose');

const Par= mongoose.model('parrent',new mongoose.Schema({}), 'parrent');

exports.Par= Par; 

route/par.js 看起来像这样:

const {Par} = require('../models/par'); 
const express = require('express');
const router = express.Router();

router.get('/', async (req, res) => {
    const par = await Par.find();
    res.send(par);
  });

module.exports = router

路线child和模型child看起来完全一样。 (这是案例的简化版本)。

我想要return这样的东西:

{
    "_id": "id_123"
    "name": "name",
    "children": [{"name":"child1"}, {"name":"child2"}, ...]
}

我找不到有效的、未描述的或使用此架构的解决方案。

如果我没理解错的话,你可以像这样简单地使用 $lookup 来获取它:

db.parent.aggregate([
  {
    "$lookup": {
      "from": "child",
      "localField": "children",
      "foreignField": "_id",
      "as": "children"
    }
  }
])

示例here

或使用$project不输出子数组中的_idexample