我在查询MongoDB数据集时遇到问题("On Street Crime in Camden"来自data.gov.uk)
数据库名称为Crime_Data_in_Camden,集合名称为Street_Crime_Camden。查找所有记录db.Street_Crime_Camden.find()
的查询工作正常,但其他任何内容都不返回任何内容
所有。以下是元数据的一部分:
{
"id" : 509935,
"name" : "Ward Name",
"dataTypeName" : "text",
"fieldName" : "ward_name",
"position" : 13,
"renderTypeName" : "text",
"tableColumnId" : 258836,
"width" : 100,
"cachedContents" : {
"largest" : "West Hampstead",
"non_null" : 79813,
"null" : 0,
"top" : [ {
"item" : "Regent's Park",
"count" : 20
}, {
"item" : "Swiss Cottage",
"count" : 19
}, {
"item" : "Holborn and Covent Garden",
"count" : 18
}
}
}
我在基本查询中尝试了3次尝试:
db.Street_Crime_Camden.find({"ward_name":"West Hampstead"});
db.Street_Crime_Camden.find({'meta.ward_name':'West Hampstead'});
db.Street_Crime_Camden.find({meta:{ward_name:"West Hampstead"} });
根据我所见过的任何文档或教程,这些方法都应该有效。而且我知道有数百行(或文档)符合这些条款,那么为什么这些查询什么都没有返回呢?建议将不胜感激。
答案 0 :(得分:1)
您尝试的三个方法中的常见主题是某种形式的ward_name = West Hampstead
,但您与我们分享的文档中没有名为ward_name
的属性。
根据您在问题中显示的文档,使用值West Hampstead
处理属性的唯一方法是:
db.Street_Crime_Camden.find({"cachedContents.largest": "West Hampstead"});
背景;您可以使用点表示法来处理文档中的属性,以便通过以下任何查找命令找到您在问题中包含的文档:
db.Street_Crime_Camden.find({"name": "Ward Name"});
db.Street_Crime_Camden.find({"position": 13});
db.Street_Crime_Camden.find({"cachedContents.top.item": "Swiss Cottage"});
db.Street_Crime_Camden.find({"cachedContents.top.1.count": 20});
这些示例可能有助于您了解如何以形成查找条件。 MongoDB docs也很有用。