首页 文章

Mongoose populate()返回对象数组而不是单个对象

提问于
浏览
0

我有一个集合,它有一个引用另一个集合的objectId的属性 .

placeSchema = mongoose.Schema({
    name: String,
    category: [{ type: Schema.Types.ObjectId, ref: 'categories' }],
    facilities: [{ type: Schema.Types.ObjectId, ref: 'facilities' }],
});

category ref是 categories 集合的objectId . facilities ref是 facilities 集合的objectId数组 .

当我填充属性时, facilities 变为 facilities objecrts的数组,但 category 也变成了一个 category 的数组 .

Place.find(query).populate('category').populate('facilities').limit(limit).skip(offset).exec(function(err, data){
    if (err) return handleError(err);
    res.json(data);
});

以下是上述查询的示例:

{
    "_id": "52ff59be70e8f0dfc8358cb4",
    "address": {
        "address_1": "Chambers Street",
        "city": "Edinburgh",
        "postcode": "EH1 1JF"
    },
    "description": "The National Museum of Scotland brings together our rich Scottish heritage with exciting international collections.",
    "loc": {
        "lon": -3.188384,
        "lat": 55.94772
    },
    "name": "National Museum of Scotland",
    "facilities": [
        {
            "_id": "53012d5b65b5e9a35efbb214",
            "name": "Facility One"
        },
        {
            "_id": "53012d6965b5e9a35efbb215",
            "name": "Facility Two"
        }
    ],
    "category": [
        {
            "_id": "52ffbf33605d0c81f36d98e0",
            "name": "Museums",
            "slug": "museums"
        }
    ]
}

这是Mongo中的文档:

{
    "_id" : ObjectId("52ff59be70e8f0dfc8358cb4"),
    "address" : {
        "address_1" : "Chambers Street",
        "city" : "Edinburgh",
        "postcode" : "EH1 1JF"
    },
    "category" : ObjectId("52ffbf33605d0c81f36d98e0"),
    "description" : "The National Museum of Scotland brings together our rich Scottish heritage with exciting international collections.",
    "facilities" : [
        ObjectId("53012d5b65b5e9a35efbb214"),
        ObjectId("53012d6965b5e9a35efbb215")
    ],
    "loc" : {
        "lon" : -3.188384,
        "lat" : 55.94772
    },
    "name" : "National Museum of Scotland"
}

如何填充单个 category ref而不是数组?

1 回答

  • 1

    这是有道理的,因为您在模式定义中已将类别字段声明为数组:

    category: [{ type: Schema.Types.ObjectId, ref: 'categories' }]
    

    以下应该不会将它放在一个数组(删除 [] ):

    category: { type: Schema.Types.ObjectId, ref: 'categories' }
    

    假设您确实只想要一个类别 .

相关问题