Node mongodb-native:插入一个字符串数组作为文档

时间:2013-12-27 13:50:15

标签: javascript node.js mongodb insert node-mongodb-native

问题:     如何通过一次调用将一组简单字符串作为新文档插入?我以前不想转换它。我在这里寻找一些mongo魔法。 $push$each事情似乎不适用于插入。

var newTags = [];
newTags.push("tagA");
newTags.push("tagB");

// with this lodash conversion the batch insertion works fine.
// ["tagA", "tagB"] -> [{name: "tagA", name: "tagB"}]
// newTags = _.map(newTags, function(key) {return {'name': key}});

db.collection('tags').insert(newTags, {w: 1},  function (err, result) {

});

我对'不工作'的定义

Mongo会插入newTags,但会像这样从每个字符串创建一个文档。
我明白为什么会这样做

{
  "_id": "111111116c021a165abcdd16",
  "0": "t",
  "1": "a",
  "2": "g",
  "3": "A"
},
{
  "_id": "111111126c021a165abcdd17",
  "0": "t",
  "1": "a",
  "2": "g",
  "3": "B"
}

但应该

{ 
  "_id": "111111116c021a165abcdd16",
  "name": "tagA"
},
{ 
  "_id": "111111126c021a165abcdd17",
  "name": "tagB"
}

1 个答案:

答案 0 :(得分:2)

据我所知,这是不可能的,因为对于插入,MongoDB要么接受单个文档对象,要么接受这些对象的数组,但不接受标量数组。

哪个IMO有意义,因为MongoDB如何知道您要将这些标量映射到特定字段(在这种情况下为name)?这是应用程序逻辑,而不是数据库逻辑。