Я должен объединить две таблицы в Mongbd на основе идентификатора объекта и получить результат.Одна таблица содержит сведения о сотруднике, другая таблица содержит изображение сотрудника. У меня было имя базы данных в качестве EmployeeData. У меня было две коллекции, названные как: сотрудник содержит информацию о сотруднике.и photo.files содержит изображение. (с помощью GridFS изображение сотрудника вставляется в БД)
В нижеследующем запросе оболочки Mongo выдается результат объединения
db.employee.aggregate([
{$match: {"_id" : ObjectId("5c9c37df3aa2359d6b998e18")}},
{$lookup: {
from: "photo.files",
localField: "_id",
foreignField: "_id",
as: "test"
}}
]);
результат в виде:
{"_id": ObjectId ("5c9c37df3aa2359d6b998e18"), "name": "Ramoji Rao Y", "age": 28, "Experiecne": 3, "creatDate": ISODate ("2019-03-28T02: 56: 31.752Z")," test ": [{" _id ": ObjectId (" 5c9c37df3aa2359d6b998e18 ")," filename ":" ramoji-test-image "," aliases ": null," chunkSize ": NumberLong (262144)," uploadDate "": ISODate ("2019-03-28T08: 47: 16.531Z"), "length": NumberLong (46178), "contentType": null, "md5": "3aca3ecc2dd5ba3a138ce76362586ee1"}]}
Теперь язапрос выше в Java Может ли кто-нибудь помочь мне, как написать с использованием агрегации.
Или любой другой простой способ реализовать в Java.
Я реализовал в соответствии с предложением Yohanaa кодis
package Mongo_aggregate;
import com.mongodb.Block;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Aggregates;
import com.mongodb.client.model.Accumulators;
import com.mongodb.client.model.Projections;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.sun.prism.Image;
import com.mongodb.client.model.Filters;
import java.util.Arrays;
import java.util.List;
import javax.swing.text.html.ImageView;
import org.bson.Document;
public class Imgae_featch {
public static void main(String[] args)
{
Block<Document> printBlock = new Block<Document>(){
public void apply(final Document document) {
System.out.println("Test Ramoji");
System.out.println(document.toJson().length());
}
};
MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("EmployeeData");
MongoCollection<Document> collection = database.getCollection("employee");
System.out.println("colletion data before is:" +collection);
collection.aggregate(
Arrays.asList(
Aggregates.match(Filters.eq("_id", "5c9c37df3aa2359d6b998e18")),
Aggregates.lookup("$photo.files", "_id", "_id", "test")
)
).forEach(printBlock);
}
}
Если вы не дадите результата, вы можете помочь с этим.