查询依赖于 mongodb 中其他文档值的文档

2023-11-29

想象一下以下猫鼬模型:

const UserSchema = Schema({
  //_id: ObjectId,
  //more fields,
  blockedIds: [{
    type: ObjectId,
    ref: 'User'
  }]
})

获取与某个 _id 的用户的 BlockedId 不匹配的所有用户的最有效方法是什么?

一个简单的方法是执行两个查询:

User.findById(id).then(user => {
  return User.find({_id: {$nin: user.blockedIds}})
})

是否可以使用聚合框架和 $facets 在一个查询中完成这一任务?


Try 不相关的3.6 中针对您的用例的子查询。

就像是

User.aggregate(
 [{$lookup:{
   from: "users",
   pipeline:[
    {$match: {_id:mongoose.Types.ObjectId(id)}},
    {$project: {_id:0,blockedIds:1}}
   ],
   as: "noncr"
 }},
 {$match:{
   $expr:{
     $not:[
      {$in:[
        $_id,
        {$arrayElemAt:["$noncr.blockedIds",0]}
      ]}
    ]
  }
}},
{$project:{noncr:0}}]
)

$lookup拉入输入 id 的“blockedIds”,然后$match过滤“_id”不在blockedIds列表中的文档。

$expr允许在 $match 阶段使用聚合比较运算符。

$arrayElemAt从 $lookup 数组中获取第一个元素。

$in将_id 与blockedIds 进行比较。

$project排除从最终响应中删除“noncr”字段。

请注意,当您测试查询时,在查找阶段的“from”属性中使用集合名称而不是模型或架构名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查询依赖于 mongodb 中其他文档值的文档 的相关文章

  • 从 firebase 数据库获取最高分值

    在我的网站上有一些我从 firebase 获得的电影 电影的分数在0到100之间 我已经在我的网站上找到了所有电影 我还想按降序显示它们 例如评分最高的 5 部电影 我怎样才能实现这一点 感谢您的回答 const app initializ
  • 如何在Rails 中使用highlight.js?

    我正在尝试在我的 Rails 应用程序中使用语法突出显示和highlight js height js 的说明如下 https github com isagalaev highlight js https github com isaga
  • 超出 Google 电子表格上的 ImportXML 限制

    我现在陷入了 抓取问题 特别是我想将作者的姓名从网页提取到谷歌电子表格 其实功能 IMPORTXML A2 span class author vcard meta item 正在工作 但是当我增加了要抓取的链接数量后 它就开始无限加载 所
  • 解构为两个单独的变量

    有没有一种快速的方法来解构一个对象 以便将其存储到两个不同的组中 例如 const obj a 1 b 2 c 3 d 4 e 5 const a b obj store the rest of the properties that we
  • 发送电子邮件的 Google Apps 脚本语法错误。无法识别我的问题

    我正在尝试让 Google 工作表从工作簿中另一张工作表的长列表中发送个性化电子邮件 我使用了教程 因为我是所有编码语言的认证新手 但 AppScript 告诉我第 4 行有语法错误 我一生都无法弄清楚我做错了什么 但我确信当由具有这些合法
  • 如何使单词中的每个字母在悬停时发生变化

    假设我的网站上某个段落中有一个单词 IamGreat 我希望它在悬停时更改为 Good4you 但是 我不想更改整个单词 而是希望每个字母单独更改 因此 如果我将鼠标悬停在字母 I 上 它将变成字母 G 字母 r 将变成数字 4 等 这两个
  • 等待动态加载脚本

    在我的页面正文中 我需要插入以下代码作为 AJAX 调用的结果 p Loading jQuery p p Using jQuery p 我不能使用 load 由于文档已经加载 因此该事件不会触发 这安全吗 如果没有 我如何确保在执行自定义生
  • AngularJS Youtube 播放器嵌入非常大的播放列表

    我目前正在构建一个 AngularJS 应用程序 我知道它有点过时 但我对它很有信心 我的应用程序需要嵌入一个 YouTube 播放器 其中包含一个非常大的播放列表 大约 1500 个项目 但我无法对其进行编码 以便它实际上可以嵌入超过 2
  • Javascript 清理:插入可能的 XSS html 字符串的最安全方法

    目前我正在将此方法与 jQuery 解决方案结合使用 以清除字符串中可能的 XSS 攻击 sanitize function str return htmlentities str ENT QUOTES return div div tex
  • 有什么简单的方法可以清理 Google Maps v3 API 上的所有标记、折线和其他叠加层吗?

    我想获得一张新地图 而不是使用刷新网页 thanks 并有简单的方法来获取地图上的所有叠加层 在 v2 API 中 有clearOverlays http code google com apis maps documentation ja
  • 谷歌地图API v3如何获取所有形状的坐标

    我有这个谷歌脚本 可以创建形状和删除形状 但没有太多关于保存形状的信息 我查了一下互联网 知道我可以通过 overlaycomplete 中的 getpaths 访问路径坐标 而且我还可以将坐标推入一个收集所有形状的数组中 但是 如果用户删
  • 如何使网站适应用户的屏幕分辨率?

    我正在使用 1024x768 屏幕分辨率来设计我的网站 当您从屏幕分辨率较小 较大的计算机上的浏览器中查看网站时 网站开始变形 无论用户的屏幕分辨率是什么 如何使网站适应用户的屏幕分辨率 我相信通过 JavaScript 或 CSS 是可能
  • Node.js 连接 createServer 代码

    我正在阅读 Node js Connect 版本 2 15 0 Create a new connect server return Function api public function createServer function ap
  • 带有子节点的拖放区域

    我有一个带有多个子节点的拖放区域 主要元素有dropenter and dropleave事件 但是 如果您将文件拖动到主元素内部和子节点上方 则dropleave被触发 如何处理 以便dropleave仅当拖动的元素和鼠标位于主元素之外时
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • Electron Auth0Lock“原始文件://不允许”

    尝试让 auth0 与我的电子应用程序一起使用 当我按照默认教程并尝试使用用户名 密码 身份验证进行身份验证时 锁定失败并显示 403 错误 并响应 不允许使用 Origin file 我还在 auth0 仪表板中客户端设置的允许来源 CO
  • 在窗口调整大小和窗口加载时动态调整 pixi 舞台及其内容的大小

    我正在尝试在窗口调整大小时动态调整 pixi 舞台 画布和内容 的大小 并且最初以浏览器窗口的大小加载 而不改变比例 我使用以下内容将初始大小基本上设置为window innerWidth window innerHeight 但它做了一些
  • Chrome 上的 contenteditable 中未显示编辑光标

    当您打开此页面时 请参阅现场演示 http jsfiddle net gs3p1a6r 3 show 与 Chrome span span CSS myspan border 0 outline 0 JS myspan focus the
  • (A == B == C) 比较在 JavaScript 中如何工作?

    我预计以下比较会给出错误 var A B 0 if A B 0 console log true else console log false 但奇怪的是它又回来了false 更奇怪的是 console log A B 1 returns

随机推荐

  • 多类分类中负例的经验法则

    在多类分类任务中 对于表示 其他所有内容 的标签 样本数量应该有多大 是否有一个经验法则 示例 我想将我的输入分类为以下之一X类 这X 1当输入为 以上都不是 时 类将激活 假设我的数据集包含 10 个 正 类别中每个类别的 5 000 个
  • 将 KML 文件读入 R

    我正在构建一个工作流程 用于将多几何 KML 文件读取到 R 中 这是我的工作地图 具有点和路径几何形状 可重现的 R 脚本是 library rgdal setwd SPECIFY A FOLDER download file http
  • 在Python中删除字符

    有人知道如何删除特定字符后面的所有字符吗 像这样 http google com translate t into http google com 如果您询问的是抽象字符串而不是网址 您可以使用 gt gt gt astring http
  • 为什么 set -e 不会导致 `false || 失败假&&真`? [复制]

    这个问题在这里已经有答案了 无法找出合适的标题 我不明白 dash bash 中的行为 也就是说 我使用 set e 在命令失败时进行救援 并使用命令组来处理积极结果 IE 总体方案是 wantcommand command Than 意味
  • 如何在 Windows Phone 项目中导入 C++ dll

    我用 C 创建了一个 DLL 文件 我想将其导入到我的 Windows Phone 项目中 我遵循了来自不同来源的许多说明 即使当我运行我的代码时 我也会收到以下错误 尝试访问该方法失败 rough MainPage Add System
  • python openpyxl读取excel太慢

    我有一个 xlsx 文件 拥有 1841 行 每行有 30 列 使用 openpyxl 将整个信息保存到列表中 def get value i ws article row value ws cell row article row col
  • 是否有可能在 python 中找到 [a,b] 范围内的随机浮点数?

    我试图在 python 中生成 0 8 0 9 范围内的随机浮点数 但不幸的是 我发现的所有工具只能生成 a b 范围内的浮点数随机数 喜欢Random uniform a b 与此同时 我尝试做这样的事情 uniform 0 8 0 90
  • TypeScript 类型特定字符的字符串

    假设我想允许使用十六进制字符串 所以唯一允许的值为 0 9a f TypeScript 有没有办法定义只接受某些字符串的类型字符串 IE valid const valid HexString 123abc invalid const in
  • System.DateTime.Now 和 System.DateTime.Today 之间的区别

    谁能解释一下两者之间的区别System DateTime Now and System DateTime Today在 C NET 中 如果可能的话 各有利弊 DateTime Now返回一个DateTime由运行代码的计算机的本地日期和时
  • Google Apps 脚本 - MailApp

    我想使用 Google Apps 脚本发送一封带有replyTo 和附件的电子邮件 但我只找到了这两种方法 它们分别执行我想要的操作 sendEmail recipient subject body options sendEmail to
  • Java GraphTraversal 输出 Gremlin 查询

    如何从 Java 输出 Gremlin 查询GraphTraversal目的 默认输出 graphTraversal toString 好像 HasStep label eq brand name eq Nike status within
  • 将 int 转换为 hex,然后转换为 00 00 00 00 的格式

    我有一个递增的整数 然后我想要十六进制 所以我像这样进行转换 myInt ToString X 然后我需要一个格式为 00 00 00 00 的字符串 但我无法找到一种方法将我现在拥有的十六进制字符串转换为这种格式 使用 Linq 查询 您
  • 在Android中搜索ListView项目后,始终打开ListView的第一个项目(问题)

    当我打开搜索到的项目时 它打开的是 ListView 的第一个项目 而不是搜索到的项目 即使搜索并成功找到该项目 让我举几个例子 如果我搜索Arrow 我可以得到Arrow但当点击时Arrow它将会Almost Human Almost H
  • WebSphere liberty 类默认加载 PARENT LAST

    我一直在研究使用 WebSphere 的 Liberty 配置文件作为一种轻量级替代方案 以替代在我的本地计算机上部署成熟的 WebSphere 实例 我知道 这有点晚了 我不明白的一件事 如何将 Parent Last 类加载设置为默认
  • DELIMITER // 在触发器中起什么作用?

    DELIMITER 它有什么用呢 它将语句分隔符从 to 这样你就可以写 在你的触发器定义中 MySQL 客户端不会将其误解为意味着你已经完成了它 注意 改回来的时候 DELIMITER not DELIMITER 正如我所看到的人们尝试做
  • 将矢量世界地图添加到 R 中的光栅动画

    我用以下内容创建了一个动画animate的功能raster包并想在其上添加世界矢量地图 这是我的代码 在对其进行动画处理之前 我根据月平均温度的 3D 数组创建了一个栅格块 r lt brick ncols nb cols nrows nb
  • 为 Python 安装 PyObjC 时出现问题

    我试图在我的 Mac OS X El Capitan 上安装 PyObjC 下载大约 40 分钟后 我收到一个错误 然后它停止了 我尝试在终端中使用以下代码进行安装 pip install pyobjc 错误说 Command python
  • jQuery 获取元素相对于窗口的位置

    给定 HTML DOM ID 如何在 JavaScript JQuery 中获取元素相对于窗口的位置 这与相对于文档或偏移父级不同 因为该元素可能位于 iframe 或某些其他元素内部 我需要获取当前显示的元素矩形的屏幕位置 如位置和尺寸
  • 如何高效地将 npy 转换为 xarray / zarr

    我有一个 37 GB 的 npy 文件 我想将其转换为 Zarr 存储 以便可以包含坐标标签 理论上我有代码可以做到这一点 但我总是内存不足 我想在中间使用 Dask 来促进分块执行此操作 但我仍然耗尽内存 这些数据是人们股骨软骨的 厚度图
  • 查询依赖于 mongodb 中其他文档值的文档

    想象一下以下猫鼬模型 const UserSchema Schema id ObjectId more fields blockedIds type ObjectId ref User 获取与某个 id 的用户的 BlockedId 不匹配