MongoDB查询不返回任何结果

时间:2017-09-13 14:00:14

标签: json mongodb

我在查询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次尝试:

  1. db.Street_Crime_Camden.find({"ward_name":"West Hampstead"});
  2. db.Street_Crime_Camden.find({'meta.ward_name':'West Hampstead'});
  3. db.Street_Crime_Camden.find({meta:{ward_name:"West Hampstead"} });
  4. 根据我所见过的任何文档或教程,这些方法都应该有效。而且我知道有数百行(或文档)符合这些条款,那么为什么这些查询什么都没有返回呢?建议将不胜感激。

1 个答案:

答案 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});
  • ...... etc

这些示例可能有助于您了解如何以形成查找条件。 MongoDB docs也很有用。