Spring data mongodb检查数组内部是否存在值

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",

我想使用SpringDataAPI获取readBy数组中假设值为“2”的所有文档。 请帮帮我

我在Mongodb中的JSON是这样的

{
  "_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数组中?