多重搜索和过滤Meteor& mongodb的

时间:2016-10-19 14:54:51

标签: javascript mongodb meteor

我有简单的收藏:

nom: {
    type: String,

},
prenom:{
    type: String,

},

categorie:{
  type: String,

},
age:{
    type:String,

    } ,

ville : {

    type : String 

    }

我希望找到一种简单的方法来将多个搜索和过滤元素转换为表格。例如按名称和年龄过滤,或按年龄和城市过滤。或者全部过滤 这是我的表: my table

在我的情况下,在没有searchengine包的情况下在mongodb和meteor上制作这个多重过滤器的最佳方法

2 个答案:

答案 0 :(得分:0)

MongoDB 上使用直接查询时,您可以使用以下示例:

检查字段存在的最简单方法是使用$exist

db.collectionName.find({fieldName: {$exists: true}})

如果您要查找特定字段值:

db.collectionName.find({'fieldName': 'value'})

$or和存在的组合可能看起来像这样:

db.collectionName.find({ $or: [ {name: {$exists: true}}, {age: {$exists: true}} ] })

对于多个 $或,您可以使用以下查询:

db.collectionName.find({ $or: [ {name: {$exists: true}}, {age: {$exists: true}} ] },
                       { $or: [ {age: {$exists: true}}, {city: {$exists: true}} ] })

答案 1 :(得分:0)

这是我倾向于进行搜索的方式,因此它也会发现类似的结果。因此,如果我的结果中有一个字母“A”,如果我搜索“A”,它将显示带有字母“A”的所有内容,直到我得到更具体的信息。

请注意,您可能希望将搜索值和搜索键设为小写,因为“A”!=“a”并且不会返回任何内容。

我还提出了一个int值,你只是提出了这个问题。

let collection = yourCollection.find({
       "nom": {
            $regex: ".*CONDITION_VALUE.*"
       },
       "prenom": {
            $regex: ".*CONDITION_VALUE.*"
        },
        "categorie": {
            $regex: ".*CONDITION_VALUE.*"
        },
        "age": {
            $gt: minAge,
            $lt: maxAge
        },
        "ville": {
            $regex: ".*CONDITION_VALUE.*"
        }
 });