我想使用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是<字符串,字符串>
由于
答案 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搜索