【发布时间】:2017-01-01 12:33:11
【问题描述】:
var CarSchema = new Schema({
name: {type: String},
partIds: [{type: Schema.Types.ObjectId, ref: 'Part'}],
});
var PartSchema = new Schema({
name: {type: String},
props: [
{ colour: {type: String}, shape: {type:String} }
],
});
例如
Car = {
name: "BMW",
partIds:[ObjectId("57baa43e152654f80aac36a6")]}
Part = {
_id: ObjectId("57baa43e152654f80aac36a6"),
name: "Piston",
props: [{colour:"red", shape: "Cubical"},{colour:"green", shape: "cylindrical"}]
所以当我查询时,我应该得到这样的文档:
Car = {
name: "BMW",
partIds: [{
_id:ObjectId("57baa43e152654f80aac36a6"), name:"Piston", props: [{colour:"red", shape:"cubical"}]
}
props 数组应该只有红色的元素
我想用 Part Array 填充 Car,这样它的 prop 数组就只有红色的对象。有没有办法做到这一点,或者我必须采用老式的方式并循环通过 props 数组匹配其颜色与红色。
【问题讨论】:
-
您是否已经拥有
part收藏?还是您创建它并将其 id 存储在carCollection 中? -
零件集合不同,其ID存储在汽车集合的partIds中
-
所以如果颜色是红色,你想创建
part文档并将其id 存储在car集合中? -
不,我想查询 Car 集合,以便它填充 partIds,这样 props aray 只有颜色为红色的元素。
-
添加了示例文档
标签: node.js mongodb mongoose mongoose-populate