MongoDB精确子文档查询

MongoDB精确子文档查询,mongodb,mongodb-query,Mongodb,Mongodb Query,我在mongoDB中有以下文档 { "_id" : ObjectId("5215c622f8b2bae39d82b54c"), "params" : { "groupBy" : "days", "country" : "A", "city" : "b" } } { "_id" : ObjectId("5215c62df8b2bae39d82b54d"), "params" : { "groupBy" : "days", "country" : "A" } } { "_id" : ObjectId

我在mongoDB中有以下文档

{ "_id" : ObjectId("5215c622f8b2bae39d82b54c"), "params" : { "groupBy" : "days", "country" : "A", "city" : "b" } }
{ "_id" : ObjectId("5215c62df8b2bae39d82b54d"), "params" : { "groupBy" : "days", "country" : "A" } }
{ "_id" : ObjectId("5215c643f8b2bae39d82b54e"), "params" : { "groupBy" : "days" } }
我试图用这个查询找到第一个文档

{params : {groupBy : 'days', country : 'A', 'city' : 'b'}} 
好的,没问题,它能用。 让我们试试这个

{params : {groupBy : 'days', city : 'b', country : 'A'}}
这一点并不令人惊讶。 好的,现在我知道顺序很重要

我知道如果我想忽略属性的顺序,我可以这样做来搜索第一个文档

{ 'params.groupBy' : 'days' , 'params.city' : 'b', 'params.country' : 'A' }
现在我想找到第二个文档,我不知道属性的顺序。 所以我要做的是

{'params.groupBy' : 'days' ,  'params.country' : 'A'}
但此查询同时查找第一个和第二个文档

那么,如何才能找到只有一个查询的第二个文档

编辑:
还有一个条件是,我不确定将来params子文档中会有多少属性,并且它可能会不时更改,以查找第二个文档,只需使用一个查询运算符即可

您的查询如下所示:

db.params.find({'params.groupBy': 'days', 'params.country': 'A', 'params.city': {$exists: false}})

尝试
{params:{groupBy:“days”,country:“A”}
但是我不知道之前的顺序。所以我不知道它应该是
{params:{groupBy:“days”,country:“A”}
或者
{params:{country:“A”,groupBy:“days”}
顺序就是问题。在这种情况下,您的查询字符串应该与文档中的子文档完全相同。是否要求在此查询中只找到第二个文档,而省略第一个文档?很容易找到第一个文档,但是第二个文档并不容易。但实际上,我不确定params子文档中会有多少属性,并且它可能会不断变化。在这种情况下,您需要将其添加到您的问题中,因为这回答了您在示例中查找第二个文档的初始查询