Mongo DB / Mongoose条件包含搜索

时间:2018-12-07 03:51:58

标签: node.js mongodb mongoose ecmascript-6 mongodb-query

我有一个简单的功能,可能涉及复杂的查询。我只想向用户显示已获准在我的站点中找到他们的成员。

问题是我不知道如何添加条件,然后在查询的用户中查询。

  1. 用户致电查找。
  2. 如果搜索到的用户已选择“仅批准”。
  3. 检查搜索用户是否在其批准的列表中。

我正在将NodeJS和Mongoose一起使用。 请帮忙。

以下架构:

const ProfileSchema = new mongoose.Schema({
  userDOBs: {
    type: [Date],
    required: true
  },
  gender: {
    type: String,
    required: true
  },
  active: {
    type: Boolean,
    default: true
  },
  discoverySettings: {
    approvedOnly: {
      type: Boolean,
      default: false
    }
  },
  blockedProfileIDs: {
    type: [mongoose.Schema.Types.ObjectId],
    ref: "Profile"
  },
  approvedIDs: [
    {
      type: [mongoose.Schema.Types.ObjectId],
      ref: "Profile"
    }
  ]
});

在下面查询:

const profiles = await Profile.find({
        $and: [
          {
            _id: {
              $ne: req.user.profileID,
              $nin: doNotDisplayList
            },
            "loc.loc": {
              $nearSphere: [long, lat],
              $maxDistance: maxDistance
            },
            userDOBs: {
              $lt: moment().subtract(filter.searchParams.ageRange[0], "years"),
              $gt: moment().subtract(filter.searchParams.ageRange[1], "years")
            },
            active: true,
            "discoverySettings.visible": true,
            blockedProfiles: {
              $ne: req.user.profileID
            }
          }
        ]
      })
        .sort({
          updatedAt: -1
        })
        .limit(limit)
        .skip(skip);

0 个答案:

没有答案