作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题包括创建一个包含动态字段和应由用户输入的未定义名称的集合。所以我尝试使用变量来完成它,但它不起作用。
这是代码
insertData_dynamic_colone : function(collection) {
var colone1 = "prod";
var colone2 = "prod2";
dbObject.collection(collection).insertOne({
colone1 : "14",
colone2 : "15"
}, function(err, result) {
assert.equal(err, null);
});
},
所以在我得到的数据库上
> db.colone_dynamic.find()
{ "_id" : ObjectId("579af3c4f41e03f0362a5170"), "colone1" : "14", "colone2" : "15" }
但我期待得到
> db.colone_dynamic.find()
{ "_id" : ObjectId("579af3c4f41e03f0362a5170"), "prod" : "14", "prod2" : "15" }
最佳答案
使用 bracket notation动态构建文档。您需要首先创建一个空对象来保存键,然后使用括号表示法将动态字段添加到该对象:
insertData_dynamic_colone: function(collection, colone1, colone2) {
var obj = {};
obj[colone1] = "14";
obj[colone2] = "15";
dbObject.collection(collection).insertOne(obj, function(err, result) {
assert.equal(err, null);
});
}
或
insertData_dynamic_colone: function(collection) {
var obj = {},
colone1 = "prod",
colone2 = "prod2";
obj[colone1] = "14"; // bracket notation
obj[colone2] = "15";
dbObject.collection(collection).insertOne(obj, function(err, result) {
assert.equal(err, null);
});
}
或者,您可以使用 ES2015 Object initializer语法(正如@xmikex83 在评论中指出的那样):
insertData_dynamic_colone: function(collection) {
var colone1 = "prod";
var colone2 = "prod2";
dbObject.collection(collection).insertOne({
[colone1] : "14", // Computed property names (ES6)
[colone2] : "15"
}, function(err, result) {
assert.equal(err, null);
});
}
关于javascript - 如何在 mongodb 中创建动态文档键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38652592/
我是一名优秀的程序员,十分优秀!