-1

我正在使用 grails2.4.4 和 mongodb 插件版本 3.0.3。我在获取域对象的结果时遇到了问题。我正在使用以下代码:

我的域名:

Employee{
   ObjectId id
   String name
}

我有 ids 列表,使用下面的代码来获取员工:(请注意,下面的数据只是为了代表我的问题。在实时,我的 ids 是随机的,所以我不能使用排序,但我只想要结果输入顺序。)

def idsList=[new ObjectId("2001"), new ObjectId("2002"), new ObjectId("2003")]
def results=Employee.findAllByIdInList(idsList)

预期结果:

[Employee@2001,Employee@2002,Employee@2003]

实际结果(不按顺序):

[Employee@2002, Employee@2003 , Employee@2001] or sometimes
[Employee@2003, Employee@2001 , Employee@2002]

现在我这样做是为了按所需顺序获得输出:

def results=[]
for(id in idsList){
   def emp=Employee.findById(id)
results<<emp
}

但我想用单个调用(findAllBy*InList)来做到这一点,而不需要迭代对象。谁能告诉我如何按输入ID的顺序获得结果?

4

1 回答 1

0

你有没有尝试过

Employee.findAllByIdInList(idsList, [sort: 'id', order:'asc'])

? 它应该按预期工作

如果没有,for您可以使用循环而不是循环

def result = idList.collect { id -> Employee.findById(id) }
于 2015-07-07T08:17:02.760 回答