Mongoose 使用多个参数搜索 FindOne

2024-03-18

我第一次尝试使用 Angular + Express + mongodb 构建一些东西,所以我可能会以完全错误的方式进行处理。 Express 用于提供 json。然后 Angular 会处理所有视图等。

我正在使用 Mongoose 与 Mongo 交互。

我有以下数据库架构:

var categorySchema = new mongoose.Schema({
  title: String, // this is the Category title
  retailers : [ 
    {
      title: String,  // this is the retailer title
      data: {       // this is the retailers Data
        strapLine: String,
        img: String ,  // this is the retailer's image
        intro: String,
        website: String,
        address: String,
        tel: String,
        email: String
      } 
    }
  ]
});

var Category = mongoose.model('Category', categorySchema);

在 Express 中,我有几种获取数据的途径:

 app.get('/data/categories', function(req, res) {
   // Find all Categories.
   Category.find(function(err, data) {
     if (err) return console.error(err);
     res.json(data)
   });
 });


 // return a list of retailers belonging to the category
 app.get('/data/retailer_list/:category', function(req, res) {
   //pass in the category param (the unique ID), and use that to do our retailer lookup
   Category.findOne({ _id: req.params.category }, function(err, data) {
     if (err) return console.error(err);
     res.json(data)
   }); 
 });

上面的方法有效 - 我只是在尝试联系单个零售商时遇到了大问题。我正在传递类别和零售商 ID...我尝试了各种各样的方法 - 从对类别进行查找,然后对其中的内容进行 findOne...但我就是无法让它工作。我可能对这一切都错了......

我在这里找到了这个线程:Mongoose 中的 findOne 子文档 https://stackoverflow.com/questions/13460765/findone-subdocument-in-mongoose并实施了该解决方案 - 然而,它返回了我所有的零售商 - 而不仅仅是我想要的零售商。

// Returns a single retailer
app.get('/data/retailer_detail/:category/:id', function(req, res) {
  //pass in the category param (the unique ID), and use that to do our retailer lookup
 Category.findOne({_id: req.params.category , 'retailers.$': 1}, function(err, data) {
    console.log(data);
    if (err) return console.error(err);
    res.json(data)
  }); 
});    

谢谢, 抢


现在我看到了您的完整过滤器/查询,您应该能够使用数组位置运算符 http://docs.mongodb.org/manual/reference/projection/positional/#proj._S_在这种情况下,作为投影的一部分而不是进行客户端过滤:

app.get('/data/retailer_detail/:category/:id', function(req, res) {
  //pass in the category param (the unique ID), and use that to do our retailer lookup
 Category.findOne({
    /* query */
    _id: req.params.category , 
    'retailers._id' : req.params.id
  },
  {  /* projection */
     "retailers.$" : 1 
  }, 
  function(err, data) {
  var retailer = _.where(data.retailers , { id : req.params.id });
    if (err) return console.error(err);
    res.json(retailer)
  }); 
}); 

For the { "retailers.$" : 1 }为了正常工作,查询必须包含数组中元素的字段。这$运算符仅返回第一个匹配项。

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

Mongoose 使用多个参数搜索 FindOne 的相关文章

随机推荐

  • 如何使用 tar 提取没有文件夹结构的文件

    我有一个具有以下结构的 tar gz 文件 folder1 img gif folder2 img2 gif folder3 img3 gif 我想提取没有文件夹层次结构的图像文件 因此提取的结果如下所示 img gif img2 gif
  • 为什么在 .NET 中分发应用程序的调试版本是一种不好的做法?

    Reading 这个问题 https stackoverflow com questions 5100947 how can i have different properties and such in a vs 2010 setup p
  • 使用 gettext 和 jinja2 以及金字塔翻译 %%

    使用 Jinja2 和 Pyramid 与 Python 进行 i18n 工作 似乎不知道如何翻译 我开始怀疑这个 bug 存在于 Jinja2 中 所以我做了更多的调查 看来问题更多的是 gettext 而不是 jinja2 如 repl
  • iOs 设备特定资源无法正常工作 - ~iPad 加载默认 XIB - 通用应用程序

    我正在制作一个基于实用程序应用程序模板的通用应用程序 我选择了一个通用应用程序 MainView xib 和 MainView iPad xib 在两种设备类型上都能正常工作 在iPad2上 当我切换到FlipsideView时 它会加载F
  • Django ORM - .update(...) 以及 extra(...) 和 F(...)

    我想做一个 sql 查询来更新 Django 站点中的许多模型 我想更改一个字符列 字段以基于 id 和一些文本 在 MySQL 这个站点就是 中 我会这样做 UPDATE table SET blah prefix id suffix 我
  • C# (.NET) 中是否有更好的 Web 浏览器控件?

    我需要 JavaScript 在我的应用程序中几乎完美地工作 应该能够访问 Web 内容并让用户控制它 但是 webbrowser 组件会在 Internet Explorer 的单独实例 应用程序中弹出新窗口 并且 dotBrowser
  • 整合 ASP.NET MVC 控制器依赖关系 (StructureMap)

    我正在查看我网站中的控制器 它们的大多数构造函数如下所示 public SomeController IServiceOne serviceOne IServiceTwo serviceTwo ILoggingService logging
  • 在 Kafka 中设计生产者和消费者组件

    我在用Kafka and Zookeeper作为我的数据管道的主要组件 该管道每秒处理数千个请求 我在用Samza作为我需要对数据进行小型转换的实时数据处理工具 我的问题是我的一位消费者 比方说ConsumerA 消耗了几个主题Kafka并
  • 创建多个 csv 文件并使用 Rails 将所有内容下载到一个 zip 存档中

    我正在寻找一种方法来创建多个 csv 文件 并在 Rails 应用程序的一个请求中将它们作为一个 zip 存档下载 为了构建存档 我使用 ruby zip gem 只需使用 Rails 内置函数 send data 即可下载它 我遇到的问题
  • 如何在 Android Studio 中导入 dropbox Chooser SDK?

    https www dropbox com developers dropins chooser android https www dropbox com developers dropins chooser android 我正在尝试在
  • 修改Robot Framework中的列表列表

    我有一个在机器人框架中使用的嵌套列表 我想更改机器人框架级别的子列表中的一项 我的清单如下所示 鲍勃 玛丽 六月 七月 八月 我想将 七月 更改为其他名称 例如 九月 机器人框架将允许我更改 bob 或 mary 但如果我尝试插入列表 它会
  • 我们可以从worker/minion节点运行kubectl吗?

    我有 kubernetes 集群设置 我想检查工作程序 minion 节点中的节点 我们可以从工作程序 minion 节点运行 kubectl 吗 是的 您只需要拥有正确的客户端凭据 就可以从可以通过网络访问 apiserver 的任何地方
  • Windows 登录集成

    我正在出于某种目的构建面部识别软件 但是 作为衍生产品 我想使用相同的软件 概念 当我坐在电脑前时自动识别我并登录 处理识别 但是 我需要将其合并到 Windows 中 就像指纹登录的工作方式一样 我可以去哪里获取有关执行此操作的更多信息
  • 使用 wicked_pdf 从生成的 PDF 生成 ZIP

    在我的发票系统中 我需要一个备份功能来一次性下载所有发票到一个 zip 文件中 该系统在 Heroku 上运行 因此只能临时保存 pdf 我安装了 ruby zip 和 wicked pdf gem 我当前在控制器中的代码 def zip
  • 垃圾收集线程太多

    我正在用java开发一个软件 它在接收到事件 来自传感器 时创建一个线程 这些线程的生存时间非常短 传感器发送最多 10 个事件 分钟 这个应用程序在大多数情况下都运行良好 但有时它会挂起 当查看 eclipse 调试器时 我发现有很多线程
  • 你怎么知道用 malloc() 分配多少空间?

    我是一个完全的 C 新手 我来自 C 我一直在学习内存管理和malloc 功能 我也遇到过这段代码 char a persons name malloc sizeof char 2 我不明白这是分配了多少空间a persons name 是
  • Excel更改条件格式公式

    我有一个表 其中包含许多代表时间线的单元格 每分钟一个单元格 宽度非常小 我想在该表中可视化包含三个阶段的操作 一条线上可以有多个手术 代表一个手术室 例如 如果准备工作在 10 00 开始 实际操作在 10 23 开始 则这些时间之间的所
  • 如何使用GVIM编辑远程文件?

    我在 Ubuntu 9 10 上使用 GVIM 我正在寻找正确的方法来配置 GVIM 以便能够通过 ftp 等方式编辑远程文件 HTML PHP CSS 当我使用 e scp username remotehost path to file
  • 将数据表导出到 Excel [重复]

    这个问题在这里已经有答案了 可能的重复 如何在C 中将DataTable导出到Excel https stackoverflow com questions 8207869 how to export datatable to excel
  • Mongoose 使用多个参数搜索 FindOne

    我第一次尝试使用 Angular Express mongodb 构建一些东西 所以我可能会以完全错误的方式进行处理 Express 用于提供 json 然后 Angular 会处理所有视图等 我正在使用 Mongoose 与 Mongo