我使用以下代码为我的meteor应用程序创建了一个种子。
if (Years.find().count() === 0) {
for (y = 1905; y < 2015; y++ ) {
Years.insert({
year: y
});
}
}
然后,我想在我的应用程序中的find语句中引用_id或year字段。
我所看到的是种子在我看来是一个数组数组
我试图运行一个看起来像这样的查询。
Years.find().fetch()
这返回了数组数组
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
然后我尝试使用$ elemMatch来搜索stackoverflow。
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
是否有更好的种子方法?或者我是否需要改变查询方式?
答案 0 :(得分:1)
您的收藏实际上是每年一份文件。
.fetch()
生成所有文档的数组
您还将您的年份作为数字插入,因此您需要使用数字
进行查询你的elemmatch查询真的没有意义,它试图查询&#34;年&#34;每个文档中的数组,并不存在。一年是一个数字,而不是你定义它的数组。
所以你可以做到
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" }