MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मुझे अपने play2 एप्लिकेशन में अपने नेस्टेड रिएक्टिवमोंगो कॉल की संरचना कैसे करनी चाहिए?

मैं mongoDB में न तो ReactiveMongo का विशेषज्ञ हूं, लेकिन ऐसा लगता है कि आप एक NoSQL डेटाबेस का उसी तरह उपयोग करने का प्रयास कर रहे हैं जैसे आप मानक SQL डेटाबेस का उपयोग करते हैं। ध्यान दें कि mongoDB अतुल्यकालिक है जिसका अर्थ है कि कुछ भविष्य में संचालन निष्पादित किया जा सकता है, यही कारण है कि सम्मिलन/अद्यतन संचालन प्रभावित दस्तावेज़ों को वापस नहीं करता है। आपके प्रश्नों के संबंध में:

आपको शायद mongoDB db.collection.update() को देखना चाहिए। विधि और इसे upsert . के साथ कॉल करें पैरामीटर सत्य के रूप में। यदि आप इसे वहन कर सकते हैं, तो यह या तो दस्तावेज़ों को अद्यतन करेगा यदि वे डेटाबेस में पहले से मौजूद हैं या उन्हें अन्यथा सम्मिलित करें। फिर से, यह कार्रवाई प्रभावित दस्तावेज़ों को वापस नहीं करती है, लेकिन अंतिम त्रुटि . देखें reactivemongo.api.collections.GenericCollection#update जो एक Future[LastError] returns लौटाता है ।

एक बार फिर, सम्मिलित/अपडेट किए गए दस्तावेज़ वापस नहीं किए जाएंगे। यदि आपको वास्तव में पूरे प्रभावित दस्तावेज़ को वापस करने की आवश्यकता है, तो आपको मेल खाने वाले दस्तावेज़ों को पुनः प्राप्त करने के लिए एक और क्वेरी करने की आवश्यकता होगी।

मैं शायद आपके कोड को इस तरह फिर से लिखूंगा (बिना त्रुटि/विफलता प्रबंधन के):

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!")
                    }
                }
            }
        )
}

स्काला फ्यूचर्स भी देखें:http://docs.scala-lang.org/ सिंहावलोकन/core/futures.html

यह वास्तव में उपयोगी है!;)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एक खोलना एकत्रीकरण को कैसे उलटें?

  2. मोंगोडीबी इंडेक्स/रैम संबंध

  3. बहुभुज अतिव्यापी प्रतिशत

  4. MongoError:एटलस में व्यवस्थापक पर प्रश्न नहीं कर सकता

  5. मोंगोडब में किसी फ़ील्ड में ऑब्जेक्ट सरणी से आंशिक वस्तुओं को कैसे पुनर्प्राप्त करें?