gpt4 book ai didi

mongodb - 使用 Java 驱动程序 3.8 的 ColdFusion 和 MongoDB 4

转载 作者:可可西里 更新时间:2023-11-01 10:10:54 25 4
gpt4 key购买 nike

我正在尝试在 Mongo 4.0 上使用 ColdFusion 11 和 Java MongoDB 驱动程序 3.8 在 Mongo 中执行通配符搜索。

下面的代码给我的错误是找不到方法 countDocuments() 或找不到方法 find()

<cfset Mongo  = CreateObject("java","com.mongodb.MongoClient").init("localhost")>

<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 db = Mongo.getDatabase('fda')>
<cfset DrugInfo = db.getCollection("druginfo")>

<cfset searchCount=druginfo.countDocuments(m({'openfda.brand_name':/Ty/ }))>

<cfset results = DrugInfo.find(m({'openfda.brand_name': /Ty/})).iterator()>

尝试进行完全匹配搜索时,一切正常。

<cfset searchCount=druginfo.countDocuments(m({'openfda.brand_name':'Tylenol'}))>

<cfset results = DrugInfo.find(m({'openfda.brand_name': 'Tylenol'})).iterator()>

我基本上是在 Mongo Compass 中测试我的所有查询并将它们粘贴到我的代码中,但它没有按预期工作。

最佳答案

该错误消息描述性不强。

Java 驱动程序不会像 Compass 那样采用正则表达式(或至少不会通过 ColdFusion 对象),因此您必须 $regex引号之间的模式如下:

{ <field>: { $regex: 'pattern', $options: '<options>' } }


例如代替

m({'openfda.brand_name':/Ty/ })

使用

m({ 'openfda.brand_name': { '$regex': '^Ty', '$options': 'i' } })

关于如何使用$regex还有更多内容这里:
( https://docs.mongodb.com/manual/reference/operator/query/regex/ )


希望对您有所帮助。

关于mongodb - 使用 Java 驱动程序 3.8 的 ColdFusion 和 MongoDB 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51658025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com