0

我正在尝试查询嵌入式集合并达到以下条件:

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

根据我对几个教程的理解,查询应该是这样的:

为了,

case1 OR ( [case2 AND case3] OR [case4 AND case5] )

询问:

{ 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 条件时要记住一件重要的事情,否则您的查询将无法按预期工作

于 2013-04-01T10:45:54.837 回答