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:
这最终不是一个问题