MongoDB Mongoose 使用 Map 查找

Posted

技术标签:

【中文标题】MongoDB Mongoose 使用 Map 查找【英文标题】:MongoDB Mongoose find using Map 【发布时间】:2020-09-25 07:59:16 【问题描述】:

我有一个像这样的猫鼬模式:

const userSchema = new Schema( 
    email: type: String, required: true, unique:true, index:true ,
    mobile: type: String ,
    phone: type: String ,
    firstname:  type: String ,
    lastname:  type: String ,
    profile_pic:type:String,
    socialHandles: 
        type: Map,
        of: String
    ,
    active: type:Boolean, default:true
, 
    timestamps: true
 );

我想查询“给我用户 where socialHandles.instagram=jondoe”我该怎么做? 请帮忙

【问题讨论】:

【参考方案1】:

Mongoose 的地图成为您数据库中的嵌套对象

 "_id" : ObjectId(""), "socialHandles" :  "instagram": "jondoe" , ..., "__v" : 0 

所以你可以使用点符号来查询它:

let user = await User.findOne( 'socialHandles.instagram': 'jondoe' );

【讨论】:

谢谢。您将如何在 findone 中将“Instagram”作为 var 提供? 知道了。就像 const findUserBySocialHandle = ( platform, handle ) => User.findOne( [`socialHandles.$platform`]:handle); 收到了关于此问题的后续问题。如果 $platform 是由两个词组成的呢?

以上是关于MongoDB Mongoose 使用 Map 查找的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB数据库安装与基本操作 - mongoose - 增删改查

Mongoose

mongoose入门以及 mongoose 实现数据 的增删改查

mongoDB (mongoose增删改查聚合索引连接备份与恢复监控等等)

[第16期] mongoDB 干货笔记(mongoose/增删改查/聚合/索引/连接/备份与恢复/监控等)

node.js+express+mongoose实现用户增删查改案例