问题:
如何通过一次调用将一组简单字符串作为新文档插入?我以前不想转换它。我在这里寻找一些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"
}
答案 0 :(得分:2)
据我所知,这是不可能的,因为对于插入,MongoDB要么接受单个文档对象,要么接受这些对象的数组,但不接受标量数组。
哪个IMO有意义,因为MongoDB如何知道您要将这些标量映射到特定字段(在这种情况下为name
)?这是应用程序逻辑,而不是数据库逻辑。