collection.find在一个子数组中的项目

我有以下对象结构:

[ { name: "someThing" ,securities: [ {"id": "2241926"} ] } ] 

我想能够返回外部数组中的所有对象,它至less有一个孩子安全与一个值开始的ID。 我已经尝试了一些东西,并继续跑得很快。 在mongoo控制台上,此查询工作:

 db.caseSummary.find({"securities.id": /^224.*/i}) 

我们正在使用ES6,所以请为发生器语法表示歉意:

 const q = require("q"); const startsWith = function(term){ return new RegExp('^' + term + '.*', 'i') } const find = function*(collection, criteria){ const command = q.nbind(collection.find, collection), myCriteria = criteria || {}, results = yield command(myCriteria), toArray = q.nbind(results.toArray, results) ; return yield toArray() } const searchBySecurity = function*(mongo, term) { const collection = mongo.collection("caseSummary"), criteria = {"securities.id": startsWith(term) }; return yield find(collection, criteria); } 

所以searchBySecurity(this.mongo,'224')它返回一个空数组,它应该返回与mongo控制台相同的结果。 我想我翻译我的search条件或调用查找写在原始mongo控制台查询节点中的一个非常基本的概念。

编辑1:要清楚我想要返回的所有父对象,其中包含一个值的子数组,其中开始的术语传入…

编辑2:

我改变了标准是:

  criteria = { "securities": { "$elemMatch": { "id": "901774109" //common.startsWith(term) } } }; 

还是一样的结果。

编辑3:

使用nodejs – mongodb“version”:“1.4.38”


编辑4:

这最终不是一个问题