Node.js 在MongoDB中插入变量作为键

Node.js 在MongoDB中插入变量作为键,node.js,mongodb,Node.js,Mongodb,我正在从API检索JSON数据,这是一个简短的示例: {"hatenames": {"id":6239, "name":"hatenames", "stat1":659, "stat2":30, "stat3":1414693 } } 我试图将其插入MongoDB(使用MongoClient),但它不允许我直接放入对象或使用变量作为字段名。如果我输入var username,它将在数据库字段中作为username输出。这就是我想从事的工作

我正在从API检索JSON数据,这是一个简短的示例:

{"hatenames":
    {"id":6239,
     "name":"hatenames",
     "stat1":659,
     "stat2":30,
     "stat3":1414693
    }
}
我试图将其插入MongoDB(使用MongoClient),但它不允许我直接放入对象或使用变量作为字段名。如果我输入var username,它将在数据库字段中作为username输出。这就是我想从事的工作:

collection.insert({object}
collection.insert({username:object[username]}
但事实并非如此,在过去的几个小时里,我一直在坚持这一点。我找到的唯一解决方案是设置它,然后在以后更新字段名,但每次都要这样做似乎很难,我是否缺少优雅或简单的选项?

尝试这样做:

MongoClient.connect('mongodb://127.0.0.1:27017/db_name', function(err, db) {
    if(err) throw err;

    someCollection = db.collection('some_collection');
});

someCollection.insert({
    name: hatenames['name']
});
编辑

对于动态方法,我建议您围绕以下内容:

此函数将返回数组中的键

编辑2

我建立了一个链接:


看,如果这有帮助的话。

首先,作为一名程序员,你应该忘记“它不工作”这个短语。您应该描述它在遇到确切的错误消息时如何不起作用。不是你的问题

只是因为我很容易做到

db.coll.insert({"hatenames":
    {"id":6239,
     "name":"hatenames",
     "stat1":659,
     "stat2":30,
     "stat3":1414693
    }
})
或者
var a={“hatenames”:{“id”:6239,“name”:“hatenames”,“stat1”:659,“stat2”:30,“stat3”:1414693}
db.coll.插入(a)


我认为问题在于你的对象不是一个真正的对象,而是一个字符串。所以我怀疑你有一个字符串从API返回给你。类似于
“{”hatenames:{…}”
的内容,这会在您尝试保存或访问属性时导致问题。因此,请尝试将其转换为JSON。

您使用什么在mongoDB、mongoose或MongoClient中插入数据?MongoClient,很抱歉没有指定何时执行:console.log(hatenames['id']),你能得到6239吗?如果它在一个console.log中或者设置了一个变量yes,插入甚至不允许我使用[]而不会得到一个意外的“[]”错误。JSON得到JSON.parse'd如果这个帮助肯定会起作用,但我已经知道我可以这样添加它们,只需这样做:
id:hatenames['id',name:hatenames['name'],stat1:hatenames['stat1']
etc,问题是这个JSON是一个真实的例子,有些有超过50个值,这样一个接一个地做会很疯狂,好吧,那么你想要更多的动态方法吗?我喜欢一些有效的方法,但最好不要添加整个内容,如果可能的话,再回去更新字段/键名。明白吗非常感谢您的帮助Guarav Dave,我真的很感谢您对我的帮助,非常感谢。不幸的是,我很笨,错过了一个非常明显的缺陷,Salvadador Dali帮助我找到了我愚蠢的语法错误,非常抱歉浪费了您的时间,再次感谢您的所有帮助help@HateNames没关系,至少你现在有了解决办法!:)Th谢谢你的回答,如果我没有正确解释的话,很抱歉。我实际上是JSON.parse字符串,只要我从API获得它。问题是
db.coll.insert(a)
不起作用,它不允许我只输入一个var/对象/东西,它会给我一个错误,迫使我执行类似
db.coll.insert(a:b)的操作
,让我输入一个键,而不是值,希望这有意义?同时,键不能是一个变量,如果我这样做
db.coll.insert(a:a)
键将字面上是“a”而值将是您创建的对象a,但在“a”下nonetheless@HateNames您能告诉我您在执行
db.coll.insert(a)时看到的错误类型吗
Wow我太迟钝了。当我读到要为您复制它的错误时,我立即注意到了,尽管我以前做过很多次,但跳过了明显的部分。我从insert复制了以前的代码,并在做
db.coll.insert({a})
而不是
db.coll.insert(a)
。真是浪费时间,我真的很抱歉打扰你们。我很高兴你们基本上知道它是如何工作的,再次感谢你们。
db.coll.insert({"hatenames":
    {"id":6239,
     "name":"hatenames",
     "stat1":659,
     "stat2":30,
     "stat3":1414693
    }
})