什么是Java Mongo Criteria以满足以下请求

时间:2014-04-22 22:19:13

标签: java spring mongodb criteria

我想使用mongodb.core.query.Criteria来跟踪请求:

db.accounts.find({ "personalSettings.nickName" : "testNickName"})

我的文件计划是:

{
 "_id" : ObjectId("5354de90ad9b0f6c60bef7ba"),
  "personalSettings" : {
    "avatar" : "http://127.0.0.1:8080/assets/samples/avatar.png",
    "nickName" : "testNickName"
},
  "userName" : "testUser@testDomain.com"
}    

我试过用这个:

Query query = new Query(Criteria.where("personalSettings.nickName").is("testNickName"));

但我得到了:

java.lang.IllegalArgumentException: [Assertion failed] - this argument is required; it must not be null

personalSettings是<字符串,字符串>

由于

1 个答案:

答案 0 :(得分:0)

@Override
public Account getAccountByNickName(String nickname, String accountsCollection) {
    Criteria criteria = Criteria.where("personalSettings.nickName").is(nickname);
    DBCollection coll = mongoOperation.getCollection(accountsCollection);
    DBCursor dbCursor = coll.find(Query.query(criteria).getQueryObject());
    DBObject dbobj = dbCursor.next();
    Account account = (new Gson()).fromJson(dbobj.toString(), Account.class);
    return account;
}

现在 - 只有一种方式:) 因为MongoDB不支持elemMatch在地图中搜索,不支持ongoTemplate / MongoOperation搜索