2014-11-23 78 views
1

我用下面的代码为我的流星应用程序创建了一个种子。如何创建一个搜索和数组阵列

if (Years.find().count() === 0) { 
    for (y = 1905; y < 2015; y++) { 
     Years.insert({ 
      year: y 
     }); 
    } 
} 

然后,我想在我的应用程序中的查找语句中引用_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。

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 

有没有更好的办法或许种子?还是我需要改变我查询的方式?

回答

1

您的藏品实际上是每年制作一份文件。

.fetch()使所有

你也插入你的年数的文件的数组,所以你需要用一个号码查询

您elemmatch查询并没有真正意义,其试图查询每个文档中不存在的“年”数组。一年是一个数字,而不是你定义它的方式。

,所以你可以做

Years.findOne({year: 1988}) 

要看看会发生什么与蒙戈(数据存储)去你蒙戈控制台

在项目文件夹

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" } 
+0

神奇!!!!这帮助我解决了播种问题,并且了解了将year.id翻译为实际年份时的工作方式。 – LanceHaig 2014-11-23 12:23:23