如何在插入mongodb时设置字段的类型



所以我查询API,接收数据,然后将其存储到MongoDB中。到目前为止一切都很好,只是现在我已经开始使用Mongo的聚合管道了。在此过程中,我意识到Mongo将数字数据作为字符串插入。因此,现在,我的聚合管道无法像计算平均值等数字计算一样工作……因为Mongo将其视为一个字符串。

如何在插入期间设置字段类型。。。。。这样我指定这是浮动等…

到目前为止,我已经尝试了以下代码:但它运行不好,因为mongo shell抱怨字段名以数字开头:

db.weeklycol.find().forEach(function(ch)
{
db.weeklycol.update({
"_id":ch._id},
{"$set":
{
"4_close":parseInt(ch.4_close)
}
});

要访问名称怪异的属性,请使用[]:

ch['4_close']

然后关于保存数字,我做了一个测试:

> db.test.insertOne({_id:1, field: 2})
{ "acknowledged" : true, "insertedId" : 1 }
> db.test.find({_id:1})
{ "_id" : 1, "field" : 2 }

似乎添加了数字。你能不能发布一个带有一些伪值的代码的确切例子,其中插入的对象具有数字值的属性,而插入的文档将该值转换为字符串?

我已经通过下面的代码解决了这个问题。。。。所以我在将变量类型插入我的";插入";字符串,代码如下:我创建了这个函数,在插入…之前,我在整个字典中调用了这个函数。。。。如果它是一个数字,它将转换,否则它将通过:我也有类似的转换功能。。。。我把它改成了日期,而不是浮动在第4行。

def convertint(bdic):
for key, value in bdic.items():
try:
bdic[key] = float(value)
except:
pass
return bdic

最新更新