2

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

SELECT convert(datetime, field1)
FROM MyTable
4

2 回答 2

2

基本上你做不到。虽然您不能在查询中引用回一个值,但您不能即时转换它。如果您知道可能输入的内容,则可以使用某个值进行更新。没有这样的事情:

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

这是当前的增强请求。

唯一的方法是编写一个脚本,用更新的 type 爬取保存文档的集合。您还可以根据字段类型运行查询,如果您的流量介于两者之间,这可能会有所帮助。

对于此解决方案,请检查该问题:MongoDB:如何更改字段的类型?

解决方案类似于:

db.collection.find().forEach( function (x) {   
  x.b = new ISODate(x.b); // convert field to ISODate
  db.collection.save(x);
});
于 2013-09-12T14:34:50.377 回答
1

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

于 2013-09-12T14:34:52.000 回答