2014-06-11 5 views
0

Lors de l'écriture script python pour le api dans MongoDB ..Qu'est-ce que la mise à jour() dans MongoDB retourne

Nous avons ..

new_posts = [{ 'name': 'A', 'age': 17, 'marks': 97, 'school': 'School1' }, 
      { 'name': 'B', 'age': 18, 'marks': 95, 'school': 'School2' }, 
      { 'name': 'C', 'age': 19, 'marks': 97, 'school': 'School2' }] 

db.posts.insert(new_posts) 

Nous créons des indices comme suit ..

db.posts.create_index([('name',1),('school',1)],unique=True) 

Maintenant, nous effectuons deux opérations ..

db.posts.update({ 'name':'A', 'age': 17, 'school': 'School3' }, 
       { 'name':'D', 'age': 17, 'marks': 70, 'school': 'School1' }, 
        upsert=True) 

db.posts.update({ 'name':'A', 'age': 17, 'school': 'School1' }, 
       { 'name':'A', 'age': 17, 'marks': 60, 'school': 'School1' }, 
        upsert=True) 

Que retourne update() ici? Comment pouvons-nous savoir si le document est inséré dans la base de données ou si le document existant est mis à jour?

Peut-on faire quelque chose comme ..

post1 = db.posts.update({ 'name':'A', 'age': 17, 'school': 'School3' }, 
         { 'name':'D', 'age': 17, 'marks': 70, 'school': 'School1' }, 
         upsert=True) 

post2 = db.posts.update({ 'name':'A', 'age': 17, 'school': 'School1' }, 
         { 'name':'A', 'age': 17, 'marks': 60, 'school': 'School1' }, 
          upsert=True) 

print post1 

print post2 

Répondre

0

Comme le docs pour update dire, la méthode retourne:

Un document (dict) décrivant l'effet de la mise à jour ou None si écriture l'accusé de réception est désactivé.

Essayez-le et print la valeur de retour pour voir ce qui est disponible. Vous verrez quelque chose comme:

{u'syncMillis': 0, u'ok': 1.0, u'err': None, u'writtenTo': None, 
u'connectionId': 190, u'n': 1, u'updatedExisting': True} 

Le champ updatedExisting est ce que vous cherchez.