Mongo 查询以从集合数组返回特定值
Mongo query to return specific values from collections array
我有以下名为结果的集合。
_id "9FK5k755ueAYdfip3"
createdAt Date {Sat Mar 12 2016 19:58:46 GMT+0100 (CET)}
results [Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:01:29 backu...ox file was not found. ", time="02/09/15 13:01:29"},
Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:01:29 backu...ox file was not found. ", time="02/09/15 13:01:29"},
Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:22:42 backu...ox file was not found. ", time="02/09/15 13:22:42"},
432 more...]
results:
0 Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:01:29 backu...ox file was not found. ", time="02/09/15 13:01:29"}
1 Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:01:29 backu...ox file was not found. ", time="02/09/15 13:01:29"}
2 Object { errorId="uX6byeiuGjRNXTj6s", error="02/09/15 13:22:42 backu...ox file was not found. ", time="02/09/15 13:22:42"}
...
14 Object { errorId="5vfLjdbaQLgbuCiNZ", error="02/09/15 16:04:10 backu...minated with an error. ", time="02/09/15 16:04:10"}
15 Object { errorId="5vfLjdbaQLgbuCiNZ", error="02/09/15 16:04:10 backu...minated with an error. ", time="02/09/15 16:04:10"}
16 Object { errorId="5vfLjdbaQLgbuCiNZ", error="02/09/15 16:04:10 backu...minated with an error. ", time="02/09/15 16:04:10"}
...
183 Object { errorId="uX6byeiuGjRNXTj6s", error="03/13/15 13:36:24 backu...ox file was not found. ", time="03/13/15 13:36:24"}
184 Object { errorId="uX6byeiuGjRNXTj6s", error="03/13/15 13:42:39 backu...ox file was not found. ", time="03/13/15 13:42:39"}
185 Object { errorId="uX6byeiuGjRNXTj6s", error="03/13/15 13:42:40 backu...ox file was not found. ", time="03/13/15 13:42:40"}
我需要查询,它将返回数组结果中特定错误 Id 的所有文档。
我尝试了不同的查询,但没有任何效果。
例如:
Results.find ({ results: { $elemMatch : { errorId: 'uX6byeiuGjRNXTj6s'}}})
Results.find ({ results: { $elemMatch : { Key: 'errorId', 'errorId': 'uX6byeiuGjRNXTj6s'}}}).fetch()
Results.find ({'results.errorId.$' : 'uX6byeiuGjRNXTj6s'}).fetch()
请帮忙。
谢谢!!!
请尝试通过aggregation
Results.aggregate([{$unwind: '$results'},
{$match: {'results.errorId': 'uX6byeiuGjRNXTj6s'}}])
您可以使用$elemMatch
.Mongo documentaton 提供了一些例子。但对于您的案例,请使用:
{ results: { $elemMatch: { errorId: "xyz"} } }
如果这不起作用,根据 mongo 文档,您可以使用:
{ "results.errorId": "xyz" }
我尝试从浏览器控制台运行查询,并得到以下结果:
Results.find({ results: { $elemMatch: { errorId: "uX6byeiuGjRNXTj6s"} } }).fetch()
[Object { _id="9FK5k755ueAYdfip3", results=[435], createdAt=Date}]
Results.find({ results: { $elemMatch: { "results.errorId": "uX6byeiuGjRNXTj6s"} } }).fetch()
[]
Results.aggregate([{$unwind: '$results'},{$match: {'results.errorId': 'uX6byeiuGjRNXTj6s'}}]).fetch()
TypeError: Results.aggregate is not a function
...gregate([{$unwind: '$results'},{$match: {'results.errorId': 'uX6byeiuGjRNXTj6s'}...
第一个查询返回所有 id,而不仅仅是"uX6byeiuGjRNXTj6s"。其他两个查询不起作用。然后我尝试直接从数据库运行它们(流星蒙戈),结果如下。
db.results.find({ results: { $elemMatch: { errorId: "uX6byeiuGjRNXTj6s"} } })
- returned ALL ids
db.results.find({ results: { $elemMatch: { "results.errorId": "uX6byeiuGjRNXTj6s"} } })
- returned empty
meteor:PRIMARY> db.results.aggregate([{$unwind: '$results'},{$match: {'results.errorId': 'uX6byeiuGjRNXTj6s'}}])
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:01:29 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:01:29" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:01:29 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:01:29" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:22:42 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:22:42" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:22:43 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:22:43" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:49:33 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:49:33" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 13:49:34 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 13:49:34" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 14:02:22 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 14:02:22" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 14:02:22 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 14:02:22" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 14:30:41 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 14:30:41" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 14:30:41 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 14:30:41" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 15:46:41 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 15:46:41" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/09/15 15:46:42 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/09/15 15:46:42" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:26:24 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:26:24" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:26:24 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:26:24" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:40:47 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:40:47" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:40:48 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:40:48" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:47:49 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:47:49" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 15:47:49 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 15:47:49" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 16:08:38 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 16:08:38" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
{ "_id" : "9FK5k755ueAYdfip3", "results" : { "errorId" : "uX6byeiuGjRNXTj6s", "error" : "02/10/15 16:08:38 backup.swatycomet.lan nsrd Error encountered while re-signing lockbox 'D:''EMC''Networker''nsr''lockbox''backup.comet.si''clb.lb': The lockbox file was not found. ", "time" : "02/10/15 16:08:38" }, "createdAt" : ISODate("2016-03-12T18:58:46.967Z") }
Type "it" for more
所以这里的第三个查询返回了我需要的东西。然后我尝试在我的流星代码中运行该查询:
console.log(Results.aggregate([{$unwind: '$results'},{$match: {'results.errorId': 'uX6byeiuGjRNXTj6s'}}]));
但得到的是低于错误而不是结果。
模板帮助程序中的异常:.errors@http://localhost:3000/app/client/templates/results/results.js?951539bd4f24742e5d7a64530c2463bfe41fde91:33:21bindDataContext/<@http://localhost:3000/packages/blaze.js?9391df93ba5076c2cfc61ee68724eb79b65f00d9:2986:14
我做错了什么?
相关文章:
- Regex提取URL返回数组的一部分;未定义”;
- 为循环嵌套的Javascript未按预期返回数组
- 从函数中的函数返回数组时出错
- JSON返回数组的奇怪结果
- 如何从NodeJS中的模块返回数组
- 在JS中返回数组的大整数运算
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- 从函数返回数组
- undercore返回数组中对象的indes,其中单词存在于对象中的句子中
- Yui Get 复选框返回数组而不是布尔值
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- JavaScript闭包和返回数组元素
- 按流星空格键模板中的索引返回数组项
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 我想返回数组
- PHP和Ajax在回调和返回数组中使用foreach循环
- Javascript-如何通过以字符串作为参数返回数组
- 从JSON调用SQL返回数组时出现问题
- Jasmine spyOn使用伪造的返回数组测试功能
- 无法从从sql数据库读取的javascript函数中获取返回数组