处理流星集合中的可变键值对(无模式困境)

时间:2015-09-16 10:28:24

标签: javascript mongodb meteor nosql

当你在.insert语句中的某些键:值对是可选的(因此你的键:值对一直在变化)而它在循环中被执行时,你如何解决问题(I&# 39;从表中读出数百行?)

因为我在集合中只有6个必填字段和6个可选字段,所以我不确定如何优雅地编码它,这样我就不必将空值插入到我的集合中。我有6个可选字段(大致如果我的数学是正确的)36个不同的组合,我必须处理if子句,不太实际。这是无模式MongoDB创建的两难选择(除非我想浪费空间并且在我的文档中有许多关键:值对具有空值)。

我尝试使用与key:value对连接的字符串作为参数。由于meteor期望.insert结构,syntax error命令({ key1:value1, key2:value2 })中不允许这样做。

我可以一次输入所有键:值对,然后点击6 $unset再次从文档中删除这些字段,但这不是一个实际的解决方案(因为它会创建很多我/ O操作时,确实应该只有1个I / O操作。)

有什么建议吗?如何解决Meteor中可变键值对的问题?在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您的代码应该将对象创建为对象litteral。

var obj1 = {foo:"1", bar:"2"}
var obj2 = {foo:"3"} // no bar

然后你让Mongo插入对象

collection.insert(obj1);
collection.insert(obj2);

答案 1 :(得分:1)

insertedObject = {}
insertedObject[“price”] = itemPrice;
insertedObject[“name”] = itemName;
if (!! itemNote ) { 
  insertedObject["note"] = itemNote ; 
}
Products.insert(insertedObject);

与您有可选参数等的出版物中的选择器/投影相同。