{ "_id": ObjectId("647e9cba01a0b1108dc87e13"), "fidOrLicense": "b7fa15237e3f45129e8cf5ee3e9ba329", "fcType": "fid", "imsi": "460004301842059", "isp": NumberInt("0"), "type": "0", "city": "yibin", "reliability": 1, "createTime": NumberInt("1686019257"), "info": "备注1", "accompany": "0" } mongd 先根据"fcType": "fid" 过滤 然后查询重复的fidOrLicense并且展示fidOrLicense和imsi列
时间: 2023-07-09 09:55:33 浏览: 92
mongoose-hook-custom-id:Mongoose 插件使用 String _id,默认情况下会生成 ObjectId 的 16 字符 base64 字符串表示
根据您提供的信息,以下是可以实现您所需功能的 MongoDB 查询语句:
```
db.collection.aggregate([
{
$match: {
"fcType": "fid"
}
},
{
$group: {
_id: "$fidOrLicense",
imsi: { $addToSet: "$imsi" },
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 1 }
}
},
{
$project: {
_id: 0,
fidOrLicense: "$_id",
imsi: 1
}
}
])
```
这个查询语句首先使用 `$match` 操作符过滤出 `fcType` 等于 "fid" 的文档。然后使用 `$group` 操作符对 `fidOrLicense` 进行分组聚合,并且使用 `$addToSet` 操作符将每个分组内的 `imsi` 添加到一个集合中去,最后通过 `$sum` 操作符计算每个分组内的文档数量。接着使用 `$match` 操作符过滤出文档数量大于 1 的分组,即重复的 `fidOrLicense`。最后使用 `$project` 操作符对输出进行格式化,只包含 `fidOrLicense` 和 `imsi` 两个字段。
如果您需要在命令行中执行这个查询语句,可以将其保存在一个 `.js` 文件中,然后使用 `mongo` 命令来执行:
```
mongo mydatabase query.js
```
其中 `mydatabase` 是您要查询的数据库,`query.js` 是保存查询语句的文件名。
阅读全文