Mongodb改变字段类型

时间:2013-09-12 13:49:54

标签: c# mongodb datetime typeconverter

我的查询出了问题。 如何在mongoDB查询中执行类似SQL查询的操作?

SELECT convert(datetime, field1)
FROM MyTable

2 个答案:

答案 0 :(得分:2)

基本上你不能这样做。虽然您无法在查询中引用一个值,但您无法动态转换它。如果您知道可能放入的内容,则可以使用特定值进行更新。 没有这样的事情:

db.collection.update({},{$set:{b:ISODate('$b')}})

这是当前的增强请求。

唯一的方法是编写一个脚本,该脚本使用更新的类型对集合保存文档进行爬网。您还可以根据字段的类型运行查询,如果您的流程在两者之间制动,这可能会有所帮助。

对于此解决方案,请检查该问题:MongoDB: How to change the type of a field?

解决方案有:

db.collection.find().forEach( function (x) {   
  x.b = new ISODate(x.b); // convert field to ISODate
  db.collection.save(x);
});

答案 1 :(得分:1)

你做不到。如果需要转换存储在MongoDB中的值,唯一的方法是在应用程序代码中。如果这是您需要经常进行的转换和/或如果您需要对转换后的值运行查询,则应考虑将原始值存储在文档中。像这样的非规范化在MongoDB模式设计中非常常见。

相关问题