我在mongodb上有很大的数据库,可以';我无法找到并使用我的信息 这是我的代码:

我在mongodb上有很大的数据库,可以';我无法找到并使用我的信息 这是我的代码:,mongodb,nosql,Mongodb,Nosql,我只想得到所有城市的输出。或者我只想得到全国的产量。我怎么做 我对你的代码示例不是百分之百满意,因为如果你的“查找”是通过ID进行的,那么就没有必要通过任何其他方式进行搜索。。。但我想知道以下几点是否有帮助: db.test.insert({name:'farid', addresses:[ {"city":"Baku", "country":"Azerbaijan"}, {"city":"Susha", "country":"Azerbaijan"}, {"city"

我只想得到所有城市的输出。或者我只想得到全国的产量。我怎么做


我对你的代码示例不是百分之百满意,因为如果你的“查找”是通过ID进行的,那么就没有必要通过任何其他方式进行搜索。。。但我想知道以下几点是否有帮助:

db.test.insert({name:'farid', addresses:[
    {"city":"Baku", "country":"Azerbaijan"},
    {"city":"Susha", "country":"Azerbaijan"},
    {"city" : "Istanbul","country" : "Turkey"}
]});
db.test.insert({name:'elena', addresses:[
    {"city" : "Ankara","country" : "Turkey"},
    {"city":"Baku", "country":"Azerbaijan"}
]});
然后,以下内容将显示所有国家:

db.test.aggregate(
 {$unwind: "$addresses"},
 {$group: {_id:"$country", countries:{$addToSet:"$addresses.country"}}}
);
结果将是

{ "result" : [ 
        { "_id" : null,
           "countries" : [ "Turkey", "Azerbaijan"]
        }
    ],
    "ok" : 1
}
也许还有其他方法,但我知道。
对于“城市”,您可能需要更加小心(因为我知道不同国家有同名城市……。

根据您的问题,这里可能有两个基本问题:

首先,看起来您正试图查询一个名为“test”的集合。通常,“test”是您正在使用的实际数据库的名称。那么,我关心的是,您正在尝试查询数据库“test”,以查找任何内部文档上具有键“city”或“country”的集合如果是这种情况,您实际需要做的是识别数据库中的所有集合,并逐个搜索它们,以查看这些集合中是否有包含您正在查找的密钥的文档。

(有关db.collection.find()方法如何工作的更多信息,请查看此处的MongoDB文档:)


第二,如果这实际上是您要做的,那么每个集合只需要定义一个查询,该查询只返回您要查找的文档的键。如果从查询中获得的结果超过0,则说明文档具有“city”键。如果它们不返回结果,您可以忽略这些集合。这里需要注意的一点是,关于“城市”的数据是否存在于集合中的嵌入式文档中。如果是这种情况,您可能实际上需要知道哪些嵌入文档可能包含您正在寻找的密钥

你能详细解释一下你到底想知道什么吗?我想知道,例如,只有所有的城市。当有人要求你“解释”时,它意味着在你的问题中添加“更多细节”。提供更多数据。显示预期结果。我感觉英语不是你在这里的主要语言,所以举例说明是阐明你观点的关键。编辑你的问题。链接存在是有原因的。我只想得到所有城市的输出。或者我只在全国范围内获得产量。我怎么做?我想要查询结构,或者当我的数据模型错误时更改数据结构。是的,英语不是我的母语
{ "result" : [ 
        { "_id" : null,
           "countries" : [ "Turkey", "Azerbaijan"]
        }
    ],
    "ok" : 1
}