MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да направите атомна актуализация на вграден документ в ListField в MongoEngine?

Можете да използвате позиционния оператор, за да актуализирате съответстващия вграден документ.

Ето пример от тестовете (https://github.com/MongoEngine/mongoengine/blob/master/tests/test_queryset.py#L313)

def test_update_using_positional_operator(self):
    """Ensure that the list fields can be updated using the positional
    operator."""

    class Comment(EmbeddedDocument):
        by = StringField()
        votes = IntField()

    class BlogPost(Document):
        title = StringField()
        comments = ListField(EmbeddedDocumentField(Comment))

    BlogPost.drop_collection()

    c1 = Comment(by="joe", votes=3)
    c2 = Comment(by="jane", votes=7)

    BlogPost(title="ABC", comments=[c1, c2]).save()

    BlogPost.objects(comments__by="jane").update(inc__comments__S__votes=1)

    post = BlogPost.objects.first()
    self.assertEquals(post.comments[1].by, 'jane')
    self.assertEquals(post.comments[1].votes, 8)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да попълним вложени обекти в mongoose?

  2. върната стойност от обратно извикване в node.js и mongoose

  3. Как да зададете име на @TextIndex в обект с Spring-Data-MongoDB

  4. MongoDB:влошена производителност на заявките

  5. MongoDB:java.lang.IllegalStateException:състоянието трябва да бъде:отворено