2012-09-20 42 views
2

我有一個使用Morphia映射的ObjectId列表。在Java中,映射是這樣的:在MongoDB中查找ObjectId數組中的元素

public class Log { 
    @Indexed 
    public List<ObjectId> companyIds; 
    .... 
} 

在蒙戈外殼,但是,當我搜索使用$ elemMatch它會抱怨無效的類型。

> db.Log.find({ "companyIds" : { "$elemMatch" : ObjectId("5059e90d0364d02be740417a")}}) 
error: { 
    "$err" : "invalid parameter: expected an object ($elemMatch)", 
    "code" : 10065 
} 

還有什麼我需要做的使用$ elemMatch與ObjectId的?

感謝

回答

10

你並不需要使用$elemMatch做到這一點。您可以運行查詢

{ "companyIds" : ObjectId("...") } 

它將查找其companyIds字段包含給定objectId的所有對象。

根據docs,$elemMatch僅當您嘗試匹配數組元素上的多個字段時纔是必需的。它所說的「期待一個對象」的原因是$elemMatch需要一個完整的mongo查詢(因爲它可以傳遞給find),因爲它是參數。

+0

Woot,工作。謝謝 – stevew