2012-02-13 6 views
1

投稿と人のコンテンツの種類を返すクエリがあります。mongodb返信の場合コメント

var query = { 
    type: { 
    $in: ["post", "person"] 
    }, 
} 

しかし、私は人がコメントを持っていれば返信したいが、常に投稿する。

var query = { 
    type: { 
    $in: ["post", "person"] 
    }, 
    // somehow make this only for person 
    // comments: {"$exists": true} 
} 

map reduceを使用することはできますか?

ありがとうございました。

答えて

1
var query = { 
    $or: [ 
     { type: "post" }, 
     { type: "person", comments: { $exists: true }}, 
    ] 
} 
1

これは動作するはずです、私はそれをテストしてみた:

db.things.find({$or: [ { type: "post" }, 
         { type: "person", comments: { $exists: true }} ]}) 

私が最初に二回クエリで同じフィールド名を使用することはできないと考えてきましたが、それだけで問題でしたいくつかのドライバーと。 hereこれについての議論を見つけることができます。

また、通常のマップではリアルタイムクエリでは受け入れがたいですが、それはかなり遅いためです。

+0

map/reduceとリアルタイムクエリに関するヒントをありがとう。 – Harry

+0

@ハリー:あなたは大歓迎です。 –

関連する問題