mongodb查询对象类型的字段

时间:2014-08-04 07:31:54

标签: javascript mongodb

我有一组记录,其中特定字段不符合单一数据类型 它在每个记录中包含不同的数据类型
像这样的东西

{"field1":ObjectId("53de"),"field2":string}
{"field1":string,"field2":string}
{"field1":NumberLong(123),"field2":string}

我想查询field1包含字符串数据类型的记录 有没有办法在field1中查询特定的数据类型?

之类的东西
db.collection.find({field1:{$regex:"some string format"}})

1 个答案:

答案 0 :(得分:3)

您可以使用$type运算符根据特定类型查询属性:

db.collection.find( { "field1": { $type : 2 } } )

查看docs for $type - 字符串值由整数2表示。

然后,为了更改这些值,您可以将更新语句与$type上的查询一起使用。在这里,我将field1属性更改为ObjectId()

db.collection.update( 
  { "field1": { $type : 2 } }, 
  { "$set": {
    "field1": ObjectId() 
  }  } 
)