У меня есть эти два документа в моей базе данных MongoDB:MongoDB - странное поведение запроса
db.DocumentFile.find().pretty()
{
"_id" : ObjectId("587f39910cc0fec092bdb10c"),
"_class" : "com.smartinnotec.legalprojectmanagement.dao.domain.DocumentFile",
"fileName" : "DocumentFile1",
"ending" : "jpg",
"projectId" : "587f39910cc0fec092bdb10b",
"active" : true,
"userIdBlackList" : [
"587f39910cc0fec092bdb10a"
]
}
{
"_id" : ObjectId("587f39910cc0fec092bdb10d"),
"_class" : "com.smartinnotec.legalprojectmanagement.dao.domain.DocumentFile",
"fileName" : "DocumentFile2",
"ending" : "jpg",
"projectId" : "587f39910cc0fec092bdb10b",
"active" : true,
"userIdBlackList" : [ ]
}
у меня есть этот код, чтобы получить количество запросов:
final Query query = new Query();
query.addCriteria(Criteria.where("userIdBlackList").nin(userId));
final Long amount = mongoTemplate.count(query, DocumentFile.class);
return amount.intValue();
Сумма является 2 в в этом случае, что это неправильно - оно должно быть 1. запрос в объект запроса выглядит следующим образом:
Query: { "userIdBlackList" : { "$nin" : [ "587f39910cc0fec092bdb10a"]}}
Если скопировать этот запрос и сделал запрос для MongoDB консоли, как это:
db.DocumentFile.find({ "userIdBlackList" : { "$nin" : [ "587f39910cc0fec092bdb10a"]}}).pretty()
я получаю сумму двух, что, если не так, потому что один документ включает в себя 587f39910cc0fec092bdb10a в userIdBlackList -> он должен быть один.
С помощью этой команды запроса:
db.DocumentFile.find({userIdBlackList: { "$nin": ["587f39910cc0fec092bdb10a"] } }).pretty();
я получить правильный результат, я действительно путают в данный момент. Есть ли у кого-нибудь идеи? Возможно, проблема в том, что один раз userIdBlackList с кавычкой («userIdBlackList»), а в другой раз это не так.
Вы храните mongoIds в поле массива userIdBlackList? Или строка? –
Строки, идентификационные строки uf пользователей – quma
Это действительно сумасшедший, я использовал пользовательские строки, его не работает, чем @DBRef для User Object, а не работает, теперь ObjectId's, все еще не работает. На самом деле мне непонятно, почему это делает такие проблы с данными Spring и MongoDB. – quma