1

私は Nodejs と mongodb の初心者です。

次のシナリオのデータを取得しようとしていました。以下の3つのスキーマを考える Profile schema

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

しかし、それは機能していません。これを取得するための最良の方法を教えてください。

ご協力ありがとうございました

4

1 に答える 1

1

Follows コレクションに対する最初のクエリから何も返されませんか? あなたは文字列を渡しています

'500d18823e792d8814000001'

ただし、MongoDB は文字列と ObjectId を異なる方法で格納します。profileid フィールドは ObjectId であるため、クエリを実行する前に文字列を ObjectId に変換する必要があります。

Follows コレクションに対してクエリを実行してみてください

'profileid':ObjectId('500d18823e792d8814000001')
于 2012-08-25T18:13:15.147 に答える