我正在构建一个具有可点击的过滤器的应用程序&#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来说比较新,所以如果它有点愚蠢的话,我会提前道歉!
答案 0 :(得分:2)
不要对查询进行字符串化。改为平整对象。例如:
Beaches.find({
"cafe.score": 1,
"dogs.score": 1,
});