有什么办法可以让mongodb中的某个特定字段的所有唯一值都说出collectionA,并将其映射到说出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" }
有没有有效的方法来实现这一目标?
最佳答案
您可以通过仅使用.upsert()
避免重复来做第一部分:
const A = CollectionA.find();
A.map( a => {
const itemCode = a.itemCode;
CollectionB.upsert({ itemCode },{ $set: { itemCode });
});
您可以通过使用_.uniq()首先找到
itemCode
的唯一值和/或仅找到A中在B中没有值的那些元素来进一步优化。第二位可以由观察者完成。
A.observe({
added(a){
const itemCode = a.itemCode;
CollectionB.upsert({ itemCode },{ $set: { itemCode });
}
});
在这里,我们再次使用
.upsert()
避免重复。