Я новичок в mongodb, у меня есть такая тестовая коллекция:
{ "_id" : ObjectId("5afce40ae1def619f8c591f1"), "location" : "shanghai", "version" : "1.14", "platform" : 1 }
{ "_id" : ObjectId("5afce43ce1def619f8c591f3"), "location" : "beijing", "version" : "1.2", "platform" : 1 }
Хорошо работает в оболочке:
db.test.aggregate([{$match: { 'location':{ $in:['beijing','shanghai'] } , 'platform':{ $in:[1]} }}])
И это работает в Java MongoClient следующим образом:
List<Bson> filter = Arrays.asList(
Document.parse("{$match: { 'location':{ $in:['beijing','shanghai'] } }}")
);
AggregateIterable<Document> doc = mongoClient.getDatabase(db).getCollection(collectionName).aggregate(filter);
Когда $ in использует массив int, он просто не работает и возвращает пустой массив:
List<Bson> filter = Arrays.asList(
Document.parse("{$match: { 'location':{ $in:['beijing','shanghai'] } , 'platform':{ $in:[1]} }}")
);
AggregateIterable<Document> doc = mongoClient.getDatabase(db).getCollection(collectionName).aggregate(filter);