我有一组记录,其中特定字段不符合单一数据类型
它在每个记录中包含不同的数据类型
像这样的东西
{"field1":ObjectId("53de"),"field2":string}
{"field1":string,"field2":string}
{"field1":NumberLong(123),"field2":string}
我想查询field1包含字符串数据类型的记录
有没有办法在field1中查询特定的数据类型?
db.collection.find({field1:{$regex:"some string format"}})
答案 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()
} }
)