我有一个模式:
var Schema = mongoose.Schema;
var TicketSchema = new Schema({
externalId: String,
name: String,
items: [{
externalId: String,
price: Number,
quantity: {
type: Number,
default: 1
},
comment: {
type: String,
default: '',
trim: true
},
entity: {
type: String,
ref: 'Entity'
}
}],
tableId: String
});
mongoose.model('Ticket', TicketSchema);
我想用ObjectId以外的唯一字段填充实体字段。如何实现呢?
5条答案
按热度按时间2vuwiymt1#
虽然回答晚了。请检查Mongoose 4.5.0的填充虚拟
点击下面的链接
http://mongoosejs.com/docs/populate.html
然后向下滚动或搜索填充虚拟,你会看到它完全按照你想要的做。
6ovsh4lw2#
我发现视图是一种有用的方法,尽管不确定它是否是最有效的!例如,在movielens数据库中,我想使用"movieId“作为外键将评级集合中的”movieId“引用到电影集合中的”movieId“。
由此创建的新视图“分级-电影-视图”具有所需字段“标题”和“类型”。
希望这个有用!
不熟悉movielen数据的人这里是schema
//查看架构
q35jwt9p3#
const blogs =这个.blogModel .find(查找).populate('博客类别','名称-_id');
注意-_id将排除object _id
ttygqcqt4#
我不确定我是否正确理解了你的问题。
在Mongoose模型中,如果我们没有指定主键,它会自动添加一个名为 * ObjectId * 的额外字段,并为每个对象分配一个唯一的值。
如果我们需要指定自己的键,可以通过指定 * key * 属性来完成。
例如:
希望你是这个意思。
如果您询问基于Items-〉entity的属性获取对象的问题,
谢谢你,
wlsrxk515#
使用crypto来散列一些唯一的东西,如objectId,然后将其保存到实体中。
票证.实体=散列;