Mongodb查询字段的对象类型

mongodb query on object type of field

本文关键字:对象 类型 字段 查询 Mongodb      更新时间:2023-09-26

我有一个记录集合,其中一个特定字段不符合单一数据类型。
它在每个记录中包含不同的数据类型

像这样

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

我只想查询字段1中包含字符串数据类型的记录。
是否有一种方法可以查询字段1中的特定数据类型?
就像

db.collection.find({field1:{$regex:"some string format"}})

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

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

查看$type的文档-字符串值由整数2表示。

然后为了改变这些值,你可以使用更新语句和对$type的查询。这里我将field1属性更改为ObjectId()

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