以下是我的模式:

var UserSchema = new Schema({
    email: String,
    name: String,
    city: String,
    username: String,
    profilePic: String,
    phoneNo: Number,
    shortList: {
        project: [{ type: Schema.ObjectId, ref: "Project" }],
        flat: [{ type: Schema.ObjectId, ref: "Flat" }],
    },

});

var FlatSchema = new Schema({
    project: { type: Schema.ObjectId, ref: "Project" },
    status: String,
    floor: Number,
    size: String,
    type: String,
    flat_number: String,
    price: Number,
    flooringType: String,
    createdAt: { type: Date, 'default': Date.now },
    isDeleted: { type: Boolean, 'default': false },
   });

var ProjectSchema = new Schema({
    name: String,
    shortName: String, 
    developer: { type: Schema.ObjectId, ref: "Developer" },
    address: {
        street_address: String,
        city: String,
        state: String,
        pin: Number,
        position: {
            lat: Number,
            long: Number
        }
    },
    ofcAddress: {
        street_address: String,
        city: String,
        state: String,
        pin: Number,
    },

    overview: {
        size: String,
        area: String,
        configuration: String,
        possession_starts: Date,
        info: String,
        aminities: [{ type: Schema.ObjectId, ref: "Amenity" }]
    },
    images: {
        hdpi: String,
        xhdpi: String,
        web: String,
        mdpi: String
    },

});

这里user链接与flat模型shortList.flatflat模型是链接与project

现在,我try Select 以下所有细节:

User.findById(req.params.id)
        .populate('shortList.project', { 'CalculationsRules': 0, 'KBFlatTypeCharges': 0, 'CategoryPremia': 0, 'Floor': 0, 'KBUnitType': 0, 'floorplans': 0, 'flats': 0, 'towers': 0, 'galaryImages': 0 })
        .populate('shortList.flat', { 'pricedetails': 0 })
        .exec((err, user) => {
            if (err) { return handleError(res, err); }
            if (!user) { return res.json(401); }
//here i want to select specific field from project model
            User.populate(user, { path: 'shortList.flat.project', model: 'Project' },  (err, user) => {
                res.status(200).json(user);
            })
        });

工作正常,但我想从项目模型中 Select 一些特定的字段,比如名称和图像

推荐答案

在"填充为"中使用" Select 属性":

User.populate(user, { path: 'shortList.flat.project', model: 'Project', select: 'name' })

这将给你的项目名称只.

要指定不需要的字段,可以将其归零:

User.populate(user, { path: 'shortList.flat.project', model: 'Project', select: { 'name': 0, 'Floor': 0, 'flats': 0, 'towers': 0,} }

这对我有用.

如果你在做两级人口:

我们可以这样做:

populate('project.tower', 'name project flats');

对于获取特定feild的简单填充:

populate('project', 'name')

Mongodb相关问答推荐

在MongoDB查询中添加来自另一个集合的匹配文档的计数

最有效的Mongo聚合来展开和过滤:匹配、展开、匹配与投影和过滤

MongoDB获取所有文档谁的S子文档只包含一个特定值?

Mongo,通过 Lookup 计算多个文档中数组中的项目

在运算符 $map 中嵌入运算符 $exists

如何在 Mongoose 中定义一个通用的嵌套对象

如何使用python将csv数据推送到mongodb

查找对象是否在预保存钩子mongoose中更改

Meteor mongo 驱动程序可以处理 $each 和 $position 运算符吗?

使用 EventSourcing(NodeJS、MongoDB、JSON)跨多个偶尔连接的客户端同步数据

用 Redis 查询?

Mongo 可尾游标与 Redis 发布/订阅

在 MongoDb 中查询小于 NOW 的日期时间值

如何在 MongoDB 中进行内部连接?

从 mongodb 中的副本配置重新开始

NumberLong和简单整数之间的MongoDB区别?

MongoDB限制内存

MongoException: Index with name: code already exists with different options

spring 数据MongoDB.生成id的错误

如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?