我正在构建一个具有可点击“过滤器”的应用程序;我正在创建一个对象列表(?),我想将其传递给 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'
}, ...
我的搜索变量是我分配给 session 变量的对象列表(我认为?)。如果我通过 JSON.stringify 输出此 session var ('searchString'),它看起来像这样:
{"cafe":{"score":"1"},"dogs":{"score":"1"}}
我想将其传递给我的 mongo find
,以便它只列出与这些属性上的这些分数匹配的条目,但它返回零结果。我是否需要以某种方式使其成为 $and
查询?
目前看起来像这样:
Beaches.find(searchString);
不幸的是,一旦我将 searchString 放入查找中,即使它是空的 {}
,我也得到零结果。 (当它只是一个 find()
时,条目列表很好,所以数据本身没问题)
我做错了什么?我对 mongo/meteor 比较陌生,所以如果这是愚蠢的明显的事情,我提前道歉!
最佳答案
不要对查询进行字符串化。相反,将物体压平。示例:
Beaches.find({
"cafe.score": 1,
"dogs.score": 1,
});
关于mongodb - 为 meteor 构建动态 mongo 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909720/