在MongoDB中插入变量作为键

时间:2015-05-09 05:25:23

标签: node.js mongodb

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

{"hatenames":
    {"id":6239,
     "name":"hatenames",
     "stat1":659,
     "stat2":30,
     "stat3":1414693
    }
}

我正在尝试将其插入MongoDB(使用 MongoClient ),但它不会让我直接放置对象或使用变量作为字段名称。如果我输入var用户名,它只会在数据库字段中将其输出为用户名。这就是我想要的工作:

collection.insert({object}
collection.insert({username:object[username]}

但事实并非如此,过去几个小时我一直坚持这一点。我找到的唯一解决方案就是设置它然后更新字段名称,但是每次都要做的事情似乎很蹩脚,是不是有一些优雅或简单的选项让我不知何故?

2 个答案:

答案 0 :(得分:1)

尝试这样做:

Object.keys(hatenames)

修改

对于动态方法,我建议你玩这个function

{{1}}

此函数将返回数组中的键。

编辑2

我已经建立了一个链接:Insert json file into mongodb using a variable

看,如果有帮助。

答案 1 :(得分:1)

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

仅仅因为我可以轻松做到

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.insert(a)

我认为问题在于你的对象实际上不是一个对象,而是一个字符串。所以我怀疑你有一个从该API返回给你的字符串。像'{"hatenames":{...}'之类的东西,这会在您尝试保存或访问属性时导致问题。所以尝试将其转换为JSON。