我是Nodejs和mongodb的新手。
我正在尝试获取以下方案的数据。考虑如下3个模式 配置文件架构
var ProfileSchema = new Schema({
username: {type: String, match: /^[a-zA-Z0-9_.-]+$/, unique: true},
name: String});
帖子架构
var PostsSchema = new Schema({
profileid: {type: ObjectId, ref: 'Profile'},
message: {type: String, match: /^.{1,160}$/} });
遵循架构
var FollowSchema = new Schema({
profileid: {type: ObjectId, ref: 'Profile'},
followingid: {type: ObjectId, ref: 'Profile'}});
这类似于推特层次结构。
要获取我的关注者的所有帖子,我尝试了以下
Follows.find({'profileid' : '500d18823e792d8814000001'}).select('followingid -_id').limit(20).sort({addedon: 'desc'}).execFind(function (arr,followings) {
Posts.find({profileid: {$in: followings}}).limit(20).execFind(function (arr,data) {
console.log(data);
});
});
但它不起作用。 请指导最佳方法。
感谢您的支持
答案 0 :(得分:1)
您是否从Follows集合的初始查询中得到任何回复?你正在传递一个字符串
'500d18823e792d8814000001'
作为profileId,但MongoDB以不同方式存储字符串和ObjectId。由于profileid字段是ObjectId,因此在执行查询之前必须将字符串转换为ObjectId。
尝试查询Follows集合
'profileid':ObjectId('500d18823e792d8814000001')