use*_*277 2 string field mongodb
我有这样的记录:
{id : 1 , price : 5}
{id : 2 , price : "6"}
{id : 3 , price : 13}
{id : 4 , price : "75"}
Run Code Online (Sandbox Code Playgroud)
我想构建一个查询,只记录价格类型为“string”的人
所以,它会得到:
{id : 2 , price : "6"}
{id : 4 , price : "75"}
Run Code Online (Sandbox Code Playgroud)
您可以使用$type查询运算符来执行此操作:
db.test.find({price: {$type: 2}})
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 MongoDB 3.2+,您还可以对类型使用字符串别名:
db.test.find({price: {$type: 'string'}})
Run Code Online (Sandbox Code Playgroud)
虽然 @JohnnyHK 的答案在大多数情况下是绝对正确的,但 MongoDB 还会返回文档,其中field是一个数组,并且该数组中的任何元素都具有该类型(docs)。例如,该文档
{
_id: 1,
tags: ['123']
}
Run Code Online (Sandbox Code Playgroud)
也会返回查询Books.find({ tags: { $type: "string" } })。为了防止这种情况,您可以将查询调整为
Books.find({
tags: {
$type: "string",
$not: {
$type: "array"
}
}
})
Run Code Online (Sandbox Code Playgroud)