【发布时间】:2015-09-23 10:47:59
【问题描述】:
我有两个集合,其中一个集合包含链接字段以在两个集合之间建立关系。我试图弄清楚如何使用populate 方法正确显示两个集合中符合我的过滤条件的文档。
这是我的两个模型的设置。
图片
var imageSchema = new Schema({
pattern: { type: String, enum: ['Solid', 'Stripe', 'Plaid'] },
color: { type: String, enum: ['Grey', 'Navy Blue', 'Black', 'Khaki', 'Brown'] },
imageName: String,
imageUrl: String,
imageSource: String,
descriptions_id: String
});
var Images = mongoose.model('Images', imageSchema);
module.exports = Images;
说明
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var descriptionSchema = new Schema({
_id: String,
pattern: { type: String, enum: ['Solid', 'Stripe', 'Plaid'] },
color: { type: String, enum: ['Grey', 'Navy Blue', 'Black', 'Khaki', 'Brown'] },
body: String,
});
var Description = mongoose.model('Description', descriptionSchema);
module.exports = Description;
基本上,我想显示与我的描述 id 值匹配的所有图像。例如,我有一个描述,其 _id 值为 navy-blue。此值与图像文档的 descriptions_id 值相同。
这是合适的命令吗?
Images.find({ pattern: "solid", color:"navy-blue", descriptions_id:"navy-blue"}).populate('images').populate('descriptions');
更新:
图像和描述文档示例
说明:
{
"_id" : "navy-blue",
"body" : "Lorem Impsum."
}
图片:
{ "_id" : ObjectId("55f5c6db7f057f0dfdfasdff2cf1cd"), "pattern" : "stripe", "propercasePattern" : "Stripe", "color" : "navy-blue", "propercaseColor" : "Navy Blue", "imageUrl" : "https://s3.amazonaws.com/blue-shirt.jpg", "imageSource" : "source", "descriptions_id" : "navy-blue" }
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query