GORM / GMongo包裹集合是否接受地图? (Grails / GMongo内部。)

时间:2013-09-16 19:43:03

标签: grails gorm gmongo

我正在使用Grails Mongo域对象,我注意到我通过以下两种访问集合的方式得到了非常不同的行为:

c1:集合名称在编译时已知:

def c1 = MyDomainClass.collection

c2:集合名称仅在运行时

已知

def c2 = AnyDomainClass.collection.DB.getCollection(collectionName)

c1c2具有相同的类,但表现不同!

c1c2都有com.mongodb.DBApiLayer$MyCollection类,但行为不同。

具体来说,c1支持“友好”互动,例如将地图直接传递给GM​​ongo方法,例如

c1.find([tag:'spicy']).sort([created:1])

c2仅适用于DBObject参数,例如:

c2.find(new BasicDBObject([tag:'spicy'])).sort(new BasicDBObject([created:1]))

我更喜欢#1中的语法,即使在编译时我不知道集合,我也希望能够将这种语法用于对象。换句话说,我希望能够动态访问集合(我可以使用#2),但使用#1中的“友好”语法。

我的问题是:

  1. c1c2有何不同?
  2. 如果在编译时未知集合,我如何实例化行为类似于c1的集合?
  3. Grails / GORM / GMongo堆栈的哪一层是为支持map-to-DBObject转换而包装的对象,以及如何完成?

0 个答案:

没有答案