如何在多个集合中存储同一文档

时间:2019-02-01 06:25:19

标签: mongodb spring-data spring-mongodb spring-mongo

我正在使用Spring Data mongodb的mongoOperations存储在MongoDB中// mongoOperations.save(reqObj);

我需要将与其余API响应相同的JSON文档保存在两个集合中。

@Document(collection="collection_a")
public class Response {
}

我能够保存在collection collection_a中。我还需要在另一个集合collection_b中保存相同的json。

我是否应该像下面那样创建另一个类并将值从Response复制到ResponseCopy?还是有更好的方法。

@Document(collection="collection_b")
public class ResponseCopy {
}

1 个答案:

答案 0 :(得分:0)

目前没有这样做的可能性。您可能需要为两个文档维护两个类。

唯一的解决方案是循环并使用其文档中提到的$ lookup: https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/

db.collection('collection_a').findAndModify(
            { "_id": ObjectId(req.body.id) },
            [],
            { $set: { "delete": req.body.delete } },
            { new: true },
            function (err, data123) {
                if (err) throw err;
                db.collection('collection_a').findAndModify(
                    { "_id": ObjectId(req.body.error_id) },
                    [],
                    { $set: { "read": true } },
                    { new: true },
                    function (err, data1234) {
                        if (err) throw err;

                        res.write(JSON.stringify(data1234.value));
                        res.end();
                        db.close();
                    });
            });