我使用 Mongoose.js,无法解决 3 级层次文档的问题.
I use Mongoose.js and cannot solve problem with 3 level hierarchy document.
有两种方法.
第一 - 没有参考.
C = new Schema({
'title': String,
});
B = new Schema({
'title': String,
'c': [C]
});
A = new Schema({
'title': String,
'b': [B]
});
我需要显示 C 记录.我如何填充/找到它,只知道 C 的 _id?
I need to show C record. How can i populate / find it, knowing only _id of C?
我正在尝试使用:
A.findOne({'b.c._id': req.params.c_id}, function(err, a){
console.log(a);
});
但我不知道如何从 returnet 中获取我需要的仅 c 对象.
But i dont know how to get from returnet a object only c object that i need.
其次如果使用 refs:
C = new Schema({
'title': String,
});
B = new Schema({
'title': String,
'c': [{ type: Schema.Types.ObjectId, ref: 'C' }]
});
A = new Schema({
'title': String,
'b': [{ type: Schema.Types.ObjectId, ref: 'B' }]
});
如何填充所有 B、C 记录以获得层次结构?
How to populate all B, C records to get hierarchy?
我试图使用这样的东西:
I was try to use something like this:
A
.find({})
.populate('b')
.populate('b.c')
.exec(function(err, a){
a.forEach(function(single_a){
console.log('- ' + single_a.title);
single_a.b.forEach(function(single_b){
console.log('-- ' + single_b.title);
single_b.c.forEach(function(single_c){
console.log('--- ' + single_c.title);
});
});
});
});
但它会为 single_c.title 返回 undefined.我有办法填充它吗?
But it will return undefined for single_c.title. I there way to populate it?
谢谢.
在 Mongoose 4 中,您可以跨多个级别填充文档:
In Mongoose 4 you can populate documents across multiple levels:
假设您有一个 User 架构来跟踪用户的朋友.
Say you have a User schema which keeps track of the user's friends.
var userSchema = new Schema({
name: String,
friends: [{ type: ObjectId, ref: 'User' }]
});
首先populate() 让你得到一个用户好友列表.但是,如果您还想要用户的朋友的朋友怎么办?在这种情况下,您可以指定 populate 选项来告诉 mongoose 填充所有用户朋友的 friends 数组:
Firstly populate() lets you get a list of user friends. But what if you also wanted a user's friends of friends? In that case, you can specify a populate option to tell mongoose to populate the friends array of all the user's friends:
User.
findOne({ name: 'Val' }).
populate({
path: 'friends',
// Get friends of friends - populate the 'friends' array for every friend
populate: { path: 'friends' }
});
取自:http://mongoosejs.com/docs/populate.html#deep-填充
这篇关于猫鼬填充嵌入式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
检查一个多边形点是否在传单中的另一个内部Check if a polygon point is inside another in leaflet(检查一个多边形点是否在传单中的另一个内部)
更改传单标记群集图标颜色,继承其余默认 CSSChanging leaflet markercluster icon color, inheriting the rest of the default CSS properties(更改传单标记群集图标颜色,继承其余默认
触发点击传单标记Trigger click on leaflet marker(触发点击传单标记)
如何更改 LeafletJS 中的默认加载磁贴颜色?How can I change the default loading tile color in LeafletJS?(如何更改 LeafletJS 中的默认加载磁贴颜色?)
将 Leaflet 图层控件添加到侧边栏Adding Leaflet layer control to sidebar(将 Leaflet 图层控件添加到侧边栏)
Leaflet - 在弹出窗口中获取标记的纬度和经度Leaflet - get latitude and longitude of a marker inside a pop-up(Leaflet - 在弹出窗口中获取标记的纬度和经度)