我正在使用自动化测试。这是我第一次使用mongoDB。
因此,我试图创建一个通用方法来在所需的集合中查找将作为参数传递的文档。我找到了一些示例,所有示例都使用.collection
方法。在我的项目中似乎不起作用。
这是我的数据库客户端代码:
require 'mongo'
require 'singleton'
class DBClient
include Singleton
def initialize
@db_connection = Mongo::Client.new($env['database']['feature']['url'])
end
def find(collection, value)
coll = @db_connection.collection(collection)
coll.find(owner: 'value')
end
end
这是我实例化方法的方式
DBClient.instance.find('collectionTest', 'Jhon')
运行测试时,我收到以下消息:
undefined method `collection' for #<Mongo::Client: cluster=localhost:>
Did you mean? collections (NoMethodError)
我正在使用的宝石是mongo(2.6.1)。
我做错了什么?
答案 0 :(得分:0)
基于documentation,在Mongo :: Client中确实没有方法集合。您正在寻找的是[] method。代码如下:
require 'mongo'
require 'singleton'
class DBClient
include Singleton
def initialize
@db_connection = Mongo::Client.new($env['database']['feature']['url'])
end
def find(collection, value)
coll = @db_connection[collection]
coll.find(owner: value)
end
end
编辑:我也用查找本身更改了这一行。在您的原始代码中,它将找到所有者为“值”字符串的文档。我想您希望将所有者与值匹配的文档发送到该函数。