2011-12-07 5 views
2

現在、それぞれに、そのコレクション内の他のドキュメントを指す配列を含むドキュメントのコレクションがあります。配列にネストされたものに特定のプロパティが含まれているドキュメントの場合、このコレクションにクエリを実行する必要があります。ネストされたドキュメントのプロパティで検索するにはmongooseを使用してください。

if doc.list1[0].prop = 'foo' or doc.list2[0].prop = 'foo' then select doc 

私はこれを使ってみましたが、役に立たなかったのです。

{ 
    'doc.list1': 'foo', 
    $or: [ 
     { 'doc.list2': 'foo' } 
    ] 
} 

私は適切なトラックにいますか?私は私がないと思うので。これは私がドキュメントから掘り起こすことができる最高です。

編集

はここでトーマスの提案と同じレイアウトを使用して、私の実際のクエリの初期化です。

var query = this.Word.find({ 
    $or: [ 
     { 'before.0.cleanWord': topic }, 
     { 'after.0.cleanWord': topic }, 
     { 'cleanWord': topic } 
    ] 
}); 

答えて

3
{ 
    $or: [ 
    { 'doc.list1.0.prop': 'foo' } 
    { 'doc.list2.0.prop': 'foo' } 
    ] 
} 

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24or

+0

優秀な、私は明日までテストすることはできませんが、これは有望に見えます。これは、配列内のすべてのネストされたドキュメントを検索します。 – Olical

+0

あなたのデータベースで何が起こっているかを理解するのが少し難しいです。これはオブジェクトIDの配列ですか?これは有効な$またはクエリのいずれかの方法でなければなりません。投稿したものは常にdoc.list1 = 'foo'と一致し、$または文は無関係です。 –

+0

さて、あなたの提案に私の質問に私の現在のコードを追加しました。それでも文書は返されません。まだデバッグしています。 – Olical

関連する問題