Spring data mongodb检查数组内部是否存在值
我想使用SpringDataAPI获取readBy数组中假设值为“2”的所有文档。 请帮帮我 我在Mongodb中的JSON是这样的Spring data mongodb检查数组内部是否存在值,mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我想使用SpringDataAPI获取readBy数组中假设值为“2”的所有文档。 请帮帮我 我在Mongodb中的JSON是这样的 { "_id" : ObjectId("52c14eb92f7ceb854e445354"), "attachments" : [{ "fileMongoId" : "52c14eb82f7ceb854e44534b", "fileName" : "Desert.jpg", "fileSize" : "0 MB",
{
"_id" : ObjectId("52c14eb92f7ceb854e445354"),
"attachments" : [{
"fileMongoId" : "52c14eb82f7ceb854e44534b",
"fileName" : "Desert.jpg",
"fileSize" : "0 MB",
"fileType" : "image/jpeg"
}, {
"fileMongoId" : "52c14eb82f7ceb854e445350",
"fileName" : "Hydrangeas.jpg",
"fileSize" : "0 MB",
"fileType" : "image/jpeg"
}],
"from" : NumberLong(2),
"fromName" : "xyz",
"hasAttachment" : true,
"message" : "Hi all\r\n",
"read" : 1,
"readBy" : ["2", "3"],
"sentTime" : NumberLong("1388400312645"),
"sentType" : 2,
"subject" : "Hi",
"to" : [{
"toId" : "3",
"toName" : "pqr"
}, {
"toId" : "2",
"toName" : "xyz"
}]
}
生成查询的代码
Username是字符串,我想检查它是否存在于readBy数组中
readBy是字符串数组
Query query = new Query();
Update update = new Update();
Criteria criteria = new Criteria();
if (read) {
// criteria = Criteria.where(username).in("readBy");
query.addCriteria(criteria.andOperator(Criteria.where("to.toId")
.in(toIdList)));
} else {
// criteria = Criteria.where(username).nin("readBy");
update.addToSet("readBy", username);
query.addCriteria(criteria.andOperator(Criteria.where("to.toId")
.in(toIdList)));
mongoTemplate.updateMulti(query, update, NewMessage.class);
}
query.fields().include("from");
query.fields().include("fromName");
query.fields().include("sentTime");
query.fields().include("hasAttachment");
query.sort().on("sentTime", Order.DESCENDING);
newMessages = mongoTemplate.find(query, NewMessage.class);
最好是将您现在正在使用的代码放在您想要的查询where(“readBy”).is(username)中,以检查username是否在readBy数组中。但你不应该真的在问相反的问题吗?其中用户名不在readBy数组中?