MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana saya harus menyusun panggilan reaktifmongo bersarang saya di aplikasi play2 saya?

Saya bukan ahli dalam mongoDB juga tidak dalam ReactiveMongo tetapi tampaknya Anda mencoba menggunakan database NoSQL dengan cara yang sama seperti Anda menggunakan database SQL standar. Perhatikan bahwa mongoDB tidak sinkron yang berarti bahwa operasi dapat dijalankan di masa mendatang, inilah mengapa operasi penyisipan/pembaruan tidak mengembalikan dokumen yang terpengaruh. Mengenai pertanyaan Anda:

Anda mungkin harus melihat mongoDB db.collection.update() metode dan menyebutnya dengan upsert parameter sebagai benar. Jika Anda mampu membelinya, ini akan memperbarui dokumen jika sudah ada di database atau memasukkannya sebaliknya. Sekali lagi, operasi ini tidak mengembalikan dokumen yang terpengaruh tetapi Anda dapat memeriksa berapa banyak dokumen yang terpengaruh dengan mengakses kesalahan terakhir . Lihat reactivemongo.api.collections.GenericCollection#update yang mengembalikan Future[LastError] .

Sekali lagi, dokumen yang dimasukkan/diperbarui tidak akan dikembalikan. Jika Anda benar-benar perlu mengembalikan dokumen lengkap yang terpengaruh, Anda perlu membuat kueri lain untuk mengambil dokumen yang cocok.

Saya mungkin akan menulis ulang kode Anda dengan cara ini (tanpa penanganan kesalahan/kegagalan):

def dostuff() = Action {
    implicit request =>
        form.bindFromRequest.fold(
            errors => BadRequest(views.html.invite(errors)),
            form => {
                val objectsReadyForSave = createObjects(form.companyId, form.companyName, sms_pattern.findAllIn(form.phoneNumbers).toSet)
                Async {
                    val operations = for {
                        data <- objectsReadyForSave
                    } yield collection.update(BSONDocument("cId" -> data.cId.get, "userId" -> data.userId.get), data, upsert = true)

                    Future.sequence(operations).map {
                        lastErrors =>
                            Ok("Documents probably inserted/updated!")
                    }
                }
            }
        )
}

Lihat juga Scala Futures:http://docs.scala-lang.org/ ringkasan/core/futures.html

Ini sangat berguna!;)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pencarian teks lengkap MongoDB dengan driver haskell

  2. Menggunakan MongoDB, Express, Node.Js dan GridFS-stream untuk menyimpan file video dan gambar

  3. Bagaimana Anda memodelkan hubungan pertemanan di MongoDB?

  4. Cara Mengonversi Tampilan MongoDB menjadi Koleksi

  5. Daftar indeks di MongoDB?