2013-05-19 109 views
1

我是新来的数据库查询与noSQL数据库,并有一个快速的问题。从node.js(express-coffeescript-mongodb)的MongoDB查询

基本上我想检索'publishedImage'设置为'true'的所有字段的'名称'。我想将结果存储在一个数组中,然后使用类似while循环的方式将无序列表中的名称打印到视图文件夹中的.jade模板文件中。

我需要做什么查询?我知道如何使用php和mysql来完成这项工作,但是在查看节点教程之后,我开始更加困惑。

如果我能得到一些帮助,我会非常感激!

谢谢你们,

Joel。

回答

3

你似乎有几件事要问。

如何使用mongodb进行查询?

mongoDB中的查询与SQL查询没有太大区别。 mongoDB文档有一些关于查询如何在系统中运行的good examples。当你向下滚动页面时,你会发现它与你在mysql中所做的事情没有太大的不同。

每个mongo模块都有不同的语法来构造和执行查询。然而,最终,他们都需要执行一个查询,如我链接的mongo文档中所示。您可以在查看mongodb语法与特定于模块的语法相比时看到此情况。例如,如果我们想找到东西:

你可以看到通过模块调用(必须)模仿mongodb查询。诚然,猫鼬调用查询“条件”,但是如果你阅读猫鼬的文档,你会看到条件语法与mongoDB语法基本相同。

如何存储结果?

这是一个更复杂的问题。函数我列出了返回查询结果,并且每个函数都给出了一些处理返回值的选项:实际上,我链接的node-mongodb示例明确说明如何将.toArray调用连接到.find查询,并且瞧!你正在处理你的查询结果数组。 Mongoose提供使用回调的选项,以便您可以在收到时处理错误和结果,并使用模型使用的模式格式化结果。 (猫鼬模式和模型是另一个话题,如果您选择使用猫鼬模块,您应该通过此处的文档和搜索来详细探讨。)

如何循环访问数组?

这不是一个真正的mongoDB问题,而是一个JavaScript问题。让我点你到这两个答案在这里StackOverflow上:

  1. Loop through an array in javascript
  2. Loop through javascript object

此外,你可能想看看underscorejs图书馆和它的伴随underscore节点模块。 underscorejs中的eachmap函数在这种情况下非常方便。

0

我也来自mysql数据库。实际上,我使用mongoose来管理node.js中的mongoDB,并且很容易通过阅读此文档来学习: http://mongoosejs.com/docs/index.html

find函数是您想要的。用这样的东西:

MyStuff.find({ publishedImage: true }, function(error,result){ 
    if(!error){ 
    // Do stuff with result 
    } 
}); 

“结果”将是一个数组与所有你想要的文件。

猫鼬有很多选择,但通过链接中的文档,您可以学习开始的基础知识。 希望它可以帮助你。

+0

非常感谢谢谢!今晚我会看看这个! – Joel