gpt4 book ai didi

mongodb - 如何从 groovy/grails 查询 mongodb?

转载 作者:可可西里 更新时间:2023-11-01 09:58:05 24 4
gpt4 key购买 nike

我必须要有域对象才能查询 mongodb 吗?

如果我只想显示一些原始数据怎么办?从我的 Controller 查询 mongodb 的语法是什么?

我试过了

"def var = db.nameOfMyCollection.find()"

但是它说在我的 Controller 类中没有像 db 这样的属性。

我知道我的应用程序正在连接到数据库,因为我正在监视 mongo 服务器 日志,当我启动我的 grails 应用程序时,它会将连接数增加一个。

最佳答案

假设您已经在构建配置中添加了 mongodb java 驱动程序依赖项并刷新了您的依赖项。

创建一个名为 MongoService.groovy 的 grails 服务并放入以下代码。

不要忘记导入mongodb

package com.organisation.project

import com.mongodb.*


class MongoService {
private static MongoClient mongoClient
private static host = "localhost" //your host name
private static port = 27017 //your port no.
private static databaseName = "your-mongo-db-name"

public static MongoClient client() {
if(mongoClient == null){
return new MongoClient(host,port)
}else {
return mongoClient
}
}

public DBCollection collection(collectionName) {
DB db = client().getDB(databaseName)
return db.getCollection(collectionName)
}
}

我们现在可以在我们的 Controller 或其他服务中使用这个 MongoService。

现在您可以在 Controller 中执行以下操作。

不要忘记导入 mongodb.DBCursor

package com.organisation.project



import com.mongodb.DBCursor

class YourControllerOrService {

def mongoService //including Mongo service

def method(){
def collection = mongoService.collection("your-collection-name")
DBCursor cursor = collection.find()
try{
while(cursor.hasNext()){
def doc = cursor.next()
println doc //will print raw data if its in your database for that collection
}

}finally {
cursor.close()
}

}
}

有关更多信息,请参阅 mongodb java docs

关于mongodb - 如何从 groovy/grails 查询 mongodb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23617597/

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