为流星构建动态mongo查询

时间:2014-05-28 10:56:39

标签: mongodb meteor mongodb-query

我正在构建一个具有可点击的过滤器的应用程序&#39 ;;我创建了一个对象列表(?),我希望将其传递给mongo'找到',这样如果所选属性与某个分数匹配,我就可以提取列表。

我的数据结构如下(一个片段):

    name: 'Entry One',
    location: {
      type: 'Point',
      coordinates: [-5.654182,50.045414]
    },
    dogs: {
      score: '1',
      when: 'seasonal',
      desc: 'Dogs allowed from October to April'
    },
    lifeguard: {
      score: '1',
      when: 'seasonal',
      desc: 'A lifeguard hut is manned between April and October',
      times: ''
    },
    cafe: {
      score: '1',
      name:'Lovely cafe',
      open:'seasonal'
    }, ...

我的搜索变量是我分配给会话变量的对象列表(我认为?)。如果我通过JSON.stringify输出此会话var(' searchString'),它看起来像这样:

{"cafe":{"score":"1"},"dogs":{"score":"1"}} 

我想将此传递给我的mongo find,以便它只列出与这些属性相匹配的条目,但它会返回零结果。我是否需要以某种方式使其成为$and查询?

目前它看起来像这样:

Beaches.find(searchString);

不幸的是,只要我将searchString放入find中,即使它是空的{},我也会得到零结果。 (如果它只是find()条目列表正常,那么数据本身就可以了)

我做错了什么?我对mongo / meteor来说比较新,所以如果它有点愚蠢的话,我会提前道歉!

1 个答案:

答案 0 :(得分:2)

不要对查询进行字符串化。改为平整对象。例如:

Beaches.find({
  "cafe.score": 1,
  "dogs.score": 1,
});