2016-06-01 21 views
1

Ich würde gerne eine Regex-Abfrage: 'finden', um Datensätze zu finden, wo Adresse enthält einen Teil eines anderen Wertes für jeden Datensatz.mongodb robomongo Abfrage nach Wert in einem anderen Feld

Zum Beispiel habe ich zwei Arten von Datensätzen bekam, die ich auf

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

ich zum Beispiel

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

aber ich weiß, eine Abfrage schreiben möchte filtern möchte nicht wie man in Regex auf diesen Wert verweist.

+0

Haben Sie versucht, '{Adresse: {$ regex : this.postcode, $ options: "i"}} '? –

Antwort

0

Sie können ein $ wo verwenden. Seien Sie sich jedoch bewusst, dass es ziemlich langsam sein kann (Javascript-Code muss für jeden Datensatz ausgeführt werden). Kombinieren Sie dies mit indizierten Abfragen, wenn Sie können.

Ich bin nicht sehr bewandert mit Javascript, aber hier geht:

Mit regex:

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

Ein anderer Weg:

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