2016-09-09 1 views
2

Dites que j'ai une URL: aaa.something.com/id que l'on trouve dans plusieurs collections, dans de nombreux domaines différents.mongodb - rechercher et remplacer une chaîne partielle dans plusieurs champs

Je voudrais le changer à bbb.something.com/id via regex (ou similaire) pour trouver et remplacer seulement le préfixe de la chaîne URL.

qui suit:

db.tests.find({ "url": /^aaa\.something\.com\// }).forEach(function(doc) { 
    doc.url = doc.url.replace(/^aaa\.something\.com\//, "bbb.something.com/"); 
    db.tests.update({ "_id": doc._id },{ "$set": { "url": doc.name } }); 
}); 

suppose que le champ est toujours connu pour être url.

Mais dans la base de données, l'URL se trouve dans plusieurs endroits tels que:

  • content.photo
  • content.media
  • content.media[i].data
  • avatar
  • url

Répondre

0

Vous pouvez utiliser un caractère générique text index, puis utiliser $text pour rechercher les documents correspondant à la regex spécifiée. Une fois que vous obtenez ces documents, vous pouvez écrire du code Javascript pour trouver les clés qui correspondent à votre regex et les remplacer au besoin.