Meteor 如何创建查找以搜索和数组数组
我已经用下面的代码为我的meteor应用程序创建了一个种子Meteor 如何创建查找以搜索和数组数组,meteor,Meteor,我已经用下面的代码为我的meteor应用程序创建了一个种子 if (Years.find().count() === 0) { for (y = 1905; y < 2015; y++ ) { Years.insert({ year: y }); } } 这将返回数组的数组 Years.find().fetch(); Array[110] [0 … 99] 0: Object _id: "h
if (Years.find().count() === 0) {
for (y = 1905; y < 2015; y++ ) {
Years.insert({
year: y
});
}
}
这将返回数组的数组
Years.find().fetch();
Array[110]
[0 … 99]
0: Object
_id: "hPXZuc54irJQ78mQ5"
year: 1905
__proto__: Object
1: Object
_id: "Z7nuSCRA8W7nn9j92"
year: 1906
__proto__: Object
[100 … 109]
length: 110
然后我尝试使用stackoverflow搜索中的$elemMatch
Years.find({year: {$elemMatch:{ year: "1988" } } });
这就是我得到的
LocalCollection.Cursor {collection: LocalCollection, sorter: null, _selectorId: undefined, matcher: Minimongo.Matcher, skip: undefined…}
_selectorId: undefined
_transform: null
collection: LocalCollection
_docs: LocalCollection._IdMap
_idParse: function (id) { // 1079
_idStringify: function (id) { // 1054
_map: Object
2BiEQnaFo37MfXgZo: Object
2LXuNkpH3uq27Wobw: Object
也许有更好的播种方法吗?或者我需要改变我的查询方式吗?您的收藏实际上每年都有一份文档
.fetch()
生成所有文档的数组
您还将年份作为数字插入,因此需要使用数字进行查询
您的elemmatch查询没有真正意义,它试图查询每个文档中不存在的“年”数组。年是一个数字,而不是你定义的数组
所以你可以这么做
Years.findOne({year: 1988})
要查看mongo(存储数据的地方)的情况,请转到您的mongo控制台
在项目文件夹中
meteor mongo
那你就可以了
meteor:PRIMARY> db.years.find().pretty()
您应该会看到一堆文档,如:-
{ "year" : 1905, "_id" : "XEyPJnQeFpzxwWnWT" }
{ "year" : 1906, "_id" : "eT6Ctz5yQpZ5FpDuE" }
{ "year" : 1907, "_id" : "7jwaxumxT73X9fAK2" }
{ "year" : 1908, "_id" : "aoMJhnNBaMBv2u9ip" }
{ "year" : 1909, "_id" : "Doyta3rnXE5NvwFTY" }
{ "year" : 1910, "_id" : "uHxAsxcyi9GNYeTbN" }
{ "year" : 1911, "_id" : "BG7AmXxdMRjDLG7cp" }
好极了这有助于我解决播种问题,也有助于我理解当您想将year.id转换为实际年份时,这将如何工作。
{ "year" : 1905, "_id" : "XEyPJnQeFpzxwWnWT" }
{ "year" : 1906, "_id" : "eT6Ctz5yQpZ5FpDuE" }
{ "year" : 1907, "_id" : "7jwaxumxT73X9fAK2" }
{ "year" : 1908, "_id" : "aoMJhnNBaMBv2u9ip" }
{ "year" : 1909, "_id" : "Doyta3rnXE5NvwFTY" }
{ "year" : 1910, "_id" : "uHxAsxcyi9GNYeTbN" }
{ "year" : 1911, "_id" : "BG7AmXxdMRjDLG7cp" }