如何在ColdFusion中使用MongoDB

use*_*267 10 java coldfusion mongodb

我正在使用MongoDB 3.2.3和mongo-java-driver-3.2.2.jar库.

为了连接到服务器然后连接到特定数据库,我执行了以下操作.然后我创建一个名为的集合col1:

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

我从互联网上获得了以下代码,以便将文档插入到集合中:

<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)>
Run Code Online (Sandbox Code Playgroud)

不幸的是,最后一行产生以下错误:

No matching Method/Function for com.mongodb.MongoCollectionImpl.save(com.mongodb.BasicDBObject) found
Run Code Online (Sandbox Code Playgroud)

这似乎是完全合乎逻辑的,因为当我输出(通过a cfdump)类的内容时com.mongodb.MongoCollectionImpl,我没有看到该方法save.

有谁知道如何使用这个Java驱动程序在ColdFusion中插入MongoDB文档?
我应该导入另一个图书馆或班级吗?

rdu*_*bya 2

希望您现在已经找到答案了,因为这张票已经 5 个月了,但仅供参考:

要插入新文档,您应该使用col1.insertOne(doc)col1.insertMany(docs)(如果您有数组)

要更新文档,您应该使用col1.updateOne(query, values)col1.updatedMany(query, values)

正如 Leigh 所提到的,有关此内容的更多信息可以在以下位置找到:http://mongodb.github.io/mongo-java-driver/3.2/driver/getting-started/quick-tour/#mongodb-driver-quick-tour