Database MongoDB-将两个集合嵌入到一个集合中
我有2个集合,我想重新设计数据库,把所有的东西都放在一个集合中。 集合1:汽车和集合2:评论。我想把所有的数据从评论到汽车收集。他们有匹配的id\u产品,所以每辆车都有id\u产品,每一篇评论都有id\u产品 以下是我的想法:Database MongoDB-将两个集合嵌入到一个集合中,database,mongodb,mongodb-query,nosql,Database,Mongodb,Mongodb Query,Nosql,我有2个集合,我想重新设计数据库,把所有的东西都放在一个集合中。 集合1:汽车和集合2:评论。我想把所有的数据从评论到汽车收集。他们有匹配的id\u产品,所以每辆车都有id\u产品,每一篇评论都有id\u产品 以下是我的想法: var Acursor = db.getCollection('reviews').find({}, {_id:0}); while (Acursor.hasNext()) { var nextDoc = Acurs
var Acursor = db.getCollection('reviews').find({}, {_id:0});
while (Acursor.hasNext()) {
var nextDoc = Acursor.next();
var textReview = nextDoc.reviewerID;
var id_product = nextDoc.id_product;
db.getCollection('cars').update({id_product:id_product},
{$set: { textReview:textReview,}},
{multi:true});
};
我运行代码时没有任何错误,起初我认为它是有效的,但问题是,如果一辆车有两个评论,只有一个评论被转移到另一个集合。知道如何传输与id_产品配对的所有评论吗?这是因为
{$set:{textReview:textReview}}
,这里您每次都在更新一个字段,因此如果一辆车有两个评论,然后第一个将写入textReview字段&到了第二次查看的时候,它将覆盖现有值
相反,您可以执行{$push:{textReview:textReview}}
,因此它将首次创建数组textReview&此后,您的查询将向现有数组追加新元素
Ref:
但是,如果您的MongoDB版本是>=4.2
,那么我建议在评论集合上编写一个聚合,用于合并两个集合,然后用于将结果写入汽车集合,而不是通过代码执行读写操作