Mongoose:将$ in运算符与JSON对象一起使用

时间:2012-08-23 14:20:15

标签: json node.js mongodb mongoose

我是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);
    });
});

但它不起作用。 请指导最佳方法。

感谢您的支持

1 个答案:

答案 0 :(得分:1)

您是否从Follows集合的初始查询中得到任何回复?你正在传递一个字符串

'500d18823e792d8814000001'

作为profileId,但MongoDB以不同方式存储字符串和ObjectId。由于profileid字段是ObjectId,因此在执行查询之前必须将字符串转换为ObjectId。

尝试查询Follows集合

'profileid':ObjectId('500d18823e792d8814000001')