在MongoDB中查询没有任何价值的对象只是他们的密钥?

时间:2015-05-10 05:59:09

标签: node.js mongodb

我在node.js中使用MongoClient,没有像mongoose等其他模块。

1)现在我通过从API中检索信息来插入信息,JSON.parse-ing然后将其存储在数据库db.collection.insert(object)中。现在这个工作完美,这里是我正在检索的数据的简短预览:

{"hatenames":
    {"id":6239,
     "name":"hatenames",
     "stat1":659,
     "stat2":30,
     "stat3":1414693
    }
}

如果我做得对,是什么让我有疑问的是,在MongoVUE中,我看到它存储了文档hatenames,但是为了价值,它只是空白,这是它的图像: example

所以价值只是空白。这使我无法在数据库中找到它。我尝试了以下内容:collection.findOne( { queryObject : null },这将始终返回我的数据库中的第一个键,可能是因为值为空,但无论我搜索什么,即使我不搜索它也会返回hatenames为了它。我已经在mongodb中搜索并阅读了很多关于find但我必须遗漏的东西,因为我发现的唯一其他选项是collection.findOne( {queryObject : {$exists : true } }但是这个选项永远找不到任何东西。如果我只能做db.collection.findOne( queryObject ),这一切都会很容易,但这不起作用,它说'查询选择器必须是一个对象'。我应该如何找到它?

2)如果您不介意的话,另外一个额外的问题是,对于大约2000万个将根据名称进行查询的文档,最好只拥有1个数据库吗?或者我应该用字母拆分并拥有27个数据库?或者更疯狂,有27x27并且前两个字母的名字?最后一点有点矫枉过正,但我​​想问。

欢迎任何其他提示,谢谢阅读。

1 个答案:

答案 0 :(得分:2)

mongodb中的密钥不可能为空值,因为它使用bson(二进制json)来存储数据。并在json

  

对象是一组无序的名称/值对。一个对象开始   用{(左括号)和以}结尾(右括号)。每个名字都是   后跟:(冒号)和名称/值对分开,   (逗号)。

在您的情况下,Set PPpres = PP.Presentations.Open(pptpath) 是一个以对象hatenames作为值的键。

我建议您阅读文档和use cases,因为看起来您刚开始使用mongo并且在理解其模型时遇到一些问题。