0

埋め込まれたコレクションをクエリして、次の条件を達成しようとしています:

A && C || B && C || A && D || B && D

いくつかのチュートリアルを参照して理解したことから、クエリは次のようになります。

為に、

ケース1 OR ( [ケース2 AND ケース3] OR [ケース4 AND ケース5] )

クエリ:

{ case1 ,[{case2,case3},{case4,case5}] }

以下のクエリを試しましたが、機能していないようです。助けてください。

db.hg19_refgene_47.find({ 

                "_id.c" : 1, 
            [   {
                "_id.p" : {"$gte" : 96978}, 
                "_id.ep" : {"$lte" : 103632}
                },
                {
                "_id.p" : {"$gte" : 96978}, 
                "_id.ep" : {"$lte" : 103632}
                },
                {
                "_id.p" : {"$gte" : 96978}, 
                "_id.ep" : {"$lte" : 103632}
                }
            ]   

        })
4

2 に答える 2

1

$or演算子を使用してみることができます:

db.hg19_refgene_47.find({
  $or: [
    "_id.c" : 1,
    {
      "_id.p" : {"$gte" : 96978}, 
      "_id.ep" : {"$lte" : 103632}
    },
    {
      "_id.p" : {"$gte" : 96978}, 
      "_id.ep" : {"$lte" : 103632}
    },
    {
      "_id.p" : {"$gte" : 96978}, 
      "_id.ep" : {"$lte" : 103632}
    }
  ]
})
于 2013-04-01T07:44:44.197 に答える
0

SQL の OR 条件と同じように機能する OR 演算子を使用します。サブドキュメントが常にelemMatch演算子を使用するAND条件が必要な場合に覚えておくべき重要なことの1つは、クエリが期待どおりに機能しないことです。

于 2013-04-01T10:45:54.837 に答える