有没有办法可以在一个mongodb中获取特定字段的所有唯一值,并将其映射到collectionB,同时保持如果collectionA获得另一个新条目,则collectionB会自动更新?
so if collectionA has the following:
{ itemCode: "aaa", purchaseOrder: "po1" }`
{ itemCode: "aaa", purchaseOrder: "po2" }
{ itemCode: "bbb", purchaseOrder: "po3" }
collectionB should have
{ itemCode: "aaa" }
{ itemCode: "bbb" }
如果条目进入collectionA { itemCode: "ccc", purchaseOrder: "po4" }
collectionB automatically gets updated with
{ itemCode: "aaa" }
{ itemCode: "bbb" }
{ itemCode: "ccc" }
有没有一种有效的方法来实现这一目标?
答案 0 :(得分:1)
您只需使用.upsert()
来避免欺骗即可完成第一部分:
const A = CollectionA.find();
A.map( a => {
const itemCode = a.itemCode;
CollectionB.upsert({ itemCode },{ $set: { itemCode });
});
您可以通过首先使用_.uniq()查找itemCode
的唯一值和/或仅查找不具有B值的A的元素来进一步优化此项。
第二位可以由观察者完成。
A.observe({
added(a){
const itemCode = a.itemCode;
CollectionB.upsert({ itemCode },{ $set: { itemCode });
}
});
我们再次使用.upsert()
来避免欺骗。
答案 1 :(得分:0)
您可以使用collectionA.map(a => a.itemCode)代替collectionB。
我不认为参考映射本身就是一种选择。
此外,您只是在您的案例中复制数据。