Mongoose $ unwind返回空数组

时间:2017-03-01 12:09:27

标签: mongodb mongoose

我看到类似但没有解决问题。这就是我再次发布问题的原因。这是我的猫鼬模式

'use strict';

//Importing packages
const Mongoose    = require('mongoose');

//Declaring schema 
const Schema = Mongoose.Schema({
    moduleName  : {type: String, unique: true},
    parentModule: {type: Mongoose.Schema.Types.ObjectId, ref: 'module'},
    status      : {type: Number, default: 0},
    sortOrder   : {type: Number, default: 1},
    createdBy   : {type: Mongoose.Schema.Types.ObjectId, ref: 'admin'},
},
{
    timestamps: true
});

//Exporting packages
module.exports = Mongoose.model('module', Schema);

在我的集合中,parentModule列再次引用相同的集合。

当我使用$ unwind输出聚合函数时,输出数据为空。我的收藏品有一对一的关系。因此,检索父模块必须是对象而不是数组。这就是我使用$ unwind的原因。但它显示空洞。当我删除$ unwind时,它会显示数据。

这是我的代码:

const query = ModuleModel
.aggregate([
    {
        $match: {parentModule: {$ne: null}}
    },
    {
        $project: {
            parentModule: {$cond: [{$eq: }]}
        }
    },
    {
        "$lookup": {
            "from": "modules",
            "localField": "parentModule",               
            "foreignField": "_id",
            "as":  "parents"
        }
    },      
    {
        "$unwind": {
            path: "$parent",
            preserveNullAndEmptyArrays: true
        }
    },
], function(error, data){
    console.log(data);
    if(error)
    {
        console.log(error);
        return response(error);
    }
    else
    {
        console.log("test");
        return response({data: data});
    }
});

当我删除$ unwind时,我的输出看起来像这样

{
  "data": [
    {
      "_id": "58b509642fb32d1a1436efdd",
      "updatedAt": "2017-02-28T05:23:48.531Z",
      "createdAt": "2017-02-28T05:23:48.531Z",
      "moduleName": "roles1",
      "parentModule": "58b3d64244307f3e2fddd1e1",
      "sortOrder": 1,
      "status": 0,
      "__v": 0,
      "parents": [
        {
          "_id": "58b3d64244307f3e2fddd1e1",
          "updatedAt": "2017-02-27T07:33:22.396Z",
          "createdAt": "2017-02-27T07:33:22.396Z",
          "moduleName": "roles",
          "parentModule": null,
          "sortOrder": 1,
          "status": 0,
          "__v": 0
        }
      ]
    }
  ]
}

这里我的父列显示为一个数组,我看到了这个link。他们使用$ unwind将对象数组更改为对象。但我没有得到同样的输出。有些parentModule在集合上可以为null。

如果有人知道这个帮助我。

0 个答案:

没有答案