来自node.js的MongoDB查询(express-coffeescript-mongodb)

我是新来的数据库查询与noSQL数据库,并有一个快速的问题。

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

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

如果我可以得到一些帮助,我将非常感激!

多谢你们,

乔尔。

有几件事你似乎在问。

我如何做一个与MongoDB的查询?

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

每个mongo模块具有不同的语法来构build和执行查询。 但是,最终,他们都需要执行一个查询,就像我链接的mongo文档中显示的那样。 你可以在看到mongodb语法和模块特定的语法时看到这一点。 例如,如果我们想find一些东西:

  • mongoDB find : db.collection.find( <query>, <projection> )
  • node-mongodb find : collection.find(query, [options])
  • mongoose find : Model.find(conditions, [fields], [options], [callback])

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

我如何存储结果?

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

我如何循环数组?

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

  1. 在javascript中循环访问数组
  2. 通过JavaScript对象循环

此外,您可能要查看underscorejs库,并附带下划线节点模块。 下划线的eachmap函数在这样的情况下很方便。

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

查找function是你想要的。 有了这样的事情:

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

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

mongoose有很多select,但从链接文档,你可以学习的基础开始。 希望它可以帮助你。