2016-06-01 1 views
1

Je voudrais faire une requête regex: 'find' pour trouver des enregistrements où l'adresse contient une partie d'une autre valeur spécifique à chaque enregistrement.mongodb robomongo requête par valeur dans un autre champ

Par exemple, j'ai deux types de dossiers que je voudrais filtrer

{ 
    "address": "Street POST-CODE1" 
    "postcode": "POST-CODE1" 
}, 
{ 
    "address": "Street" 
    "postcode": "POST-CODE1" 
} 

Je voudrais écrire une requête par exemple

{ address: { $regex: /this.postcode/i } } 

mais je ne sais pas comment faire référence à cette valeur dans regex.

+0

Avez-vous essayé '{adresse: {$ regex : this.postcode, $ options: "i"}} ''? –

Répondre

0

Vous pouvez utiliser un $ where. Sachez que cela peut être assez lent (doit exécuter du code Javascript sur chaque enregistrement) alors combinez-vous avec des requêtes indexées si vous le pouvez.

Je ne suis pas très compétent avec javascript, mais voilà:

Avec regex:

db.getCollection('col').find(
    { 
     $where: function() 
     { 
      var pattern = new RegExp(this.postcode,"i"); 
      return (this.address.search(pattern)>-1); 
     } 
    }); 

Une autre façon:

db.getCollection('col').find({ $where: "this.address.indexOf(this.postcode) >= 0" });