给出以下数组:
arr = ["{'myId': 'myVal1'}","{'myId': 'myVal2'}"]
我可以逐个插入项目,例如
db.collection.insert(arr[0])
但是当我尝试插入整个数组时它就失败了(就像在http://docs.mongodb.org/manual/reference/method/db.collection.insert/中所说的那样)
db.collection.insert(arr)
Error: not an object src/mongo/shell/collection.js:179
我使用的是MongoDB 2.2.4
我该如何做到这一点?
答案 0 :(得分:1)
您正在尝试插入一个字符串数组 - mongo需要一个json文档数组。
"{'foo':'bar'}"
是一个字符串
{'foo':'bar'}
是一个对象 - 一个带有一个键值对的json文档。
当您执行
时,您认为插入成功了 db.collection.insert("{'foo':'bar'}")
但它没有按照你的想法行事。
> db.collection.findOne()
{
"_id" : ObjectId("51941c94c12b0a7bbd416430"),
"0" : "{",
"1" : "'",
"2" : "f",
"3" : "o",
"4" : "o",
"5" : "'",
"6" : ":",
"7" : "'",
"8" : "b",
"9" : "a",
"10" : "r",
"11" : "'",
"12" : "}",
"trim" : function __cf__12__f__anonymous_function() {
return this.replace(/^\s+|\s+$/g, "");
},
"ltrim" : function __cf__13__f__anonymous_function() {
return this.replace(/^\s+/, "");
},
"rtrim" : function __cf__14__f__anonymous_function() {
return this.replace(/\s+$/, "");
},
"startsWith" : function __cf__15__f__anonymous_function(str) {
return this.indexOf(str) == 0;
},
"endsWith" : function __cf__16__f__anonymous_function(str) {
return (new RegExp(RegExp.escape(str) + "$")).test(this);
}
}
我已经在你的另一个问题中放了一个指向this question/answer的指针,询问如何转换这个字符串。