哪个字段的类型? MongoDB的

时间:2015-12-22 16:55:24

标签: mongodb nosql

我必须在字段的类型上查询我的MongoDB数据库 这是我的收藏集user的文件: enter image description here

在MongoDB中,有一个可用的BSON类型及其相应数字的表。例如:

1 -> Double
2 -> String
3 -> Object
4 -> Array
......
......
......

$type选择字段值为指定数字BSON类型实例的文档:

 { field: { $type: <BSON type> } }

因此,例如使用此查询:

db.user.find({ street: { $type: 2 }})

我得到的所有文件都包含一个字符串street字段。

简而言之,这个介绍 假设我想知道哪个是street字段的类型。
在这种情况下,我必须查询我的数据库,直到我得到一些文件:

db.user.find({ street: { $type: 1 }})
db.user.find({ street: { $type: 2 }})
db.user.find({ street: { $type: 3 }})
db.user.find({ street: { $type: 4 }})
.......
.......
.......

因此,我必须使用相同的查询更改类型编号来查询我的数据库很多次。
是否有其他可能性可以知道哪个是超出前一个字段的类型?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此工具variety - MongoDB的架构分析器。

说出你的数据:

db.users.insert({name: "Tom", bio: "A nice guy.", pets: ["monkey", "fish"], someWeirdLegacyKey: "I like Ike!"});
db.users.insert({name: "Dick", bio: "I swordfight.", birthday: new Date("1974/03/14")});
db.users.insert({name: "Harry", pets: "egret", birthday: new Date("1984/03/14")});
db.users.insert({name: "Geneviève", bio: "Ça va?"});
db.users.insert({name: "Jim", someBinData: new BinData(2,"1234")});

使用:

$ mongo test --eval "var collection = 'users'" variety.js

输出:

+------------------------------------------------------------------+
| key                | types              | occurrences | percents |
| ------------------ | ------------       | ----------- | -------- |
| _id                | ObjectId           |           5 |    100.0 |
| name               | String             |           5 |    100.0 |
| bio                | String             |           3 |     60.0 |
| birthday           | String             |           2 |     40.0 |
| pets               | Array(4),String(1) |           5 |     40.0 |
| someBinData        | BinData-old        |           1 |     20.0 |
| someWeirdLegacyKey | String             |           1 |     20.0 |
+------------------------------------------------------------------+

答案 1 :(得分:0)

这将按字段类型分组。

db.collection.aggregate(
    [
        {
            $group : 
            {
                _id : 
                    {  "$type": "$yourkey"  }, 
                num : {$sum : 1}
            }
        }
    ])