2016-03-30 19 views
9

Sto usando MongoDB 3.2.3 e la libreria mongo-java-driver-3.2.2.jar.Come utilizzare MongoDB con ColdFusion

Ho effettuato le seguenti operazioni per connettersi al server e quindi a un database specifico. Ho quindi creare una collezione di nome col1:

<cfset Mongo = CreateObject("java","com.mongodb.MongoClient")> 
<cfset Mongo.init("192.168.0.30")> 
<cfset db = Mongo.getDatabase('testaj')> 
<cfset db.createCollection("col1") > 

ho ottenuto il seguente codice da Internet, al fine di inserire un documento nella collezione:

<cffunction name="m" returntype="any"> 
    <cfargument name="value" type="any"> 
    <cfif IsJSON(arguments.value)> 
     <cfset local.retrun = CreateObject("java","com.mongodb.util.JSON").parse(arguments.value)> 
    <cfelse> 
     <cfset local.retrun = CreateObject("java","com.mongodb.util.JSON").parse(SerializeJSON(arguments.value))>  
    </cfif> 
    <cfreturn local.retrun> 
</cffunction> 

<cfset doc = { 
    "Name" = "Marc", 
    "Spouse"= "Heather", 
    "Fruit" = "Mango", 
    "Kids" = [ 
       {"Name"="Alexis", "Age"=7, "Hair"="blonde", "Description"="crazy" }, 
       {"Name"="Sidney", "Age"=2, "Hair"="dirty blonde", "Description"="ornery" } 
      ], 
    "Bike" = "Felt", 
    "LoveSQL" = true, 
    "TS" = now(), 
    "Counter" = 1 
    }> 
<cfset doc = SerializeJSON(doc)> 
<cfset doc = m(doc)> 

<cfset col1.save(doc)> 

Purtroppo l'ultima riga genera il seguente errore:

No matching Method/Function for com.mongodb.MongoCollectionImpl.save(com.mongodb.BasicDBObject) found 

sembra essere del tutto logico, perché quando l'uscita I (tramite un cfdump) il contenuto della classe com.mongodb.MongoCollectionImpl, non vedo il metodo save.

Qualcuno sa come inserire un documento MongoDB in ColdFusion utilizzando questo driver Java?
Devo importare un'altra libreria o classe?

+0

'db.col1.save (doc)' funziona? Oppure 'db.testaj.save (doc)'? –

+0

Non riesco a vedere dove stai creando la variabile 'col1' nel tuo codice. Non dovrebbe essere: 'col1 = db.getCollection (" col1 "); col1.insert (doc) '? –

+0

ciao Giovanni .. eccolo qui: user3569267

risposta

1

Speriamo di aver trovato la risposta ormai dal momento che questo biglietto è ora 5 mesi di età, ma solo per riferimento:

Per inserire un nuovo documento si dovrebbe usare col1.insertOne(doc) o col1.insertMany(docs) (se si dispone di un array)

per aggiornare un documento si dovrebbe usare col1.updateOne(query, values) o col1.updatedMany(query, values)

Come già detto da Leigh ulteriori informazioni su questo sono disponibili all'indirizzo: http://mongodb.github.io/mongo-java-driver/3.2/driver/getting-started/quick-tour/#mongodb-driver-quick-tour

Problemi correlati