通过ObjectId查询Mongoose Schema

2023-12-23

再次需要你的帮助,希望对于这个项目,我在这里得到的答案将是最后一个。我发现这是一个相当常见的问题,但我已经尝试过另一个问题堆栈溢出帖子 https://stackoverflow.com/questions/7878557/cant-find-documents-searching-by-objectid-using-mongoose,以及一个由谷歌集团 https://groups.google.com/forum/?fromgroups=#!topic/mongoose-orm/5H4XyGSyncs,但解决方案对我不起作用。

我的代码有点像:

mongoose = require('mongoose');
Schema = mongoose.Schema;
mongoose.connect(MONGO_SERVER);
ObjectId = Schema.ObjectId;

var RacesSchema = new Schema({
    venue_id        : { type: mongoose.Schema.ObjectId, ref: 'Venues' },
    racetype            : String
});
var races = mongoose.model('Races', RacesSchema );

function test() {
    var MyObjectId = require('mongoose').Types.ObjectId;
    queryVenue = new MyObjectId("50e3dcdbf30375180c078f64");

    races.find({venue_id: queryVenue, racetype:'Test'})
    .exec(function(err,data) {
}

test();

但我没有得到结果,我知道有结果。

提前谢谢了!

UPDATE

已最小化上述代码示例,如果我自己查询字符串值,则此测试有效,仅查询 ObjectId 就会失败,而且我知道它存在。

JSON更新

这是我正在寻找的:

{
    "_id" : ObjectId("50e3dcddf30375180c078f85"),
    "venue_id" : "50e3dcdbf30375180c078f64",
    "racetype" : "A"
}

突然间,我相信我的答案已经清晰了。仅仅是因为venue_id实际上是一个字符串吗?如果是这样,我可以保持我的猫鼬模式不变,并在查找字符串时对查询进行转换吗?或者我应该更改这些值的存储方式(来自我开发的单独的 .net 应用程序)以作为 ObjectId 插入?

目前,对于另一个查询,当前的猫鼬模式和数据库的[实际设置]方式,使用 populate() 可以很好地用该模型当前设置的方式填充引用表 (venue_id) 的结果,唯一的区别是在上面的查询中,我没有指定venue_id...

Thanks.


是的,问题的发生是因为数据类型venue_id架构中的 (ObjectId) 与文档中的 (String) 不匹配。所以find正在查找 ObjectId 值,但未找到匹配项,因为它是文档中的字符串。

正确的解决方法是编写一个小程序来更新venue_id将文档中的值设置为 ObjectId 而不是字符串,然后您的查询将起作用。这还将这些字段的大小从 24 字节缩小到 12 字节。

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

通过ObjectId查询Mongoose Schema 的相关文章

  • NodeJs 环境变量与配置文件

    实际上 我有一个 NodeJS Express 应用程序 其配置文件包含主机 端口 JWT 令牌 数据库参数等参数 问题是 将这些参数直接保留在环境变量上 没有任何配置文件 并访问它们 而不需要在所有组件和模块中进行 require 配置是
  • 在 Nodejs 中,如何停止 FOR 循环直到 MongoDB 调用返回

    我正在研究下面的代码片段 我有一个名为 stuObjList 的 JSON 对象数组 我想循环遍历数组以查找具有特定标志集的特定 JSON 对象 然后进行数据库调用以检索更多数据 当然 FOR 循环不会等待数据库调用返回并到达 j leng
  • 使用 nw-gyp 构建 node-sqlite3

    我正在尝试为 node webkit 构建 sqlite3 The sqlite3 https www npmjs com package sqlite3 installing页面解释说它需要使用 nw gyp 来完成 据我了解 我应该下载
  • Socket.io 400(错误请求)

    我的服务器上有这段代码 var express require express var routes require routes var user require routes user var http require http var
  • dyld:惰性符号绑定失败

    当我尝试运行时遇到一个奇怪的错误gatsby develop在新创建的 gatsby 项目中 这不应该与 gatsby js 静态站点生成器 有任何关系 因为我在不同的场合也遇到了相同的错误 当我跑步时gatsby develop在我的一个
  • 将日期差转换为年数以计算 MongoDB 中的年龄

    我正在使用以下方法来计算时间戳差异中的年龄 db getCollection person aggregate project item 1 DOB personal DOB dateDifference subtract new Date
  • 未捕获的 ReferenceError:未定义角度 - Mean.IO

    我已遵循安装步骤 http mean io docsmean io 但是当我浏览 localhost 3000 时 我得到一个空白页面 当我打开控制台时 我得到一个指向相同错误的文件列表 未捕获的引用错误 角度未定义 我的问题是类似的to
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 如何防止 gulp-notify 破坏 Windows 中的 gulp-watch?

    我正在使用吞咽通知 https www npmjs org package gulp notify插入 这是我如何在 gulpfile js 中实现它的示例 您可以看到我也在使用 gutil 和 livereload 我不知道它们是否发挥任
  • Nodejs - 检查隐藏文件

    我正在迭代文件目录 想知道是否可以测试文件是否隐藏 目前 我只是检查文件是否以 开头或不 这适用于 Mac 也许还有 Linux 但是 我想知道如何在 Windows 上做到这一点 另外 句点会在所有版本的 Linux 中隐藏该文件吗 Th
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • express-hbs 实例 registerAsyncHelper 奇怪的哈希值

    我正在使用express hbs nodejs模块 但在使用时遇到问题registerAsyncHelper 我需要在限制范围内编译布局 因为我创建了一个新的 Handlebars 实例 并在该实例中创建了一个助手 但是当我编译布局时 它返
  • Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数

    我是 Nodejs 和 browserify 的新手 我从这个开始link http browserify org 我有文件 main js 其中包含此代码 var unique require uniq var data 1 2 2 3
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • 纤维/未来实际上有什么作用?

    下面这行代码的作用是什么 Npm require fibers future 我在网上查找示例 发现了一些这样的示例 Future Npm require fibers future var accessToken new Future 什
  • 监听文件夹和文件(更改)

    可以直接在 PHP 或 Node 上监听文件夹和文件的更改 通过事件 还是我需要创建自己的方法来执行此操作 Example 我需要听文件夹 user 如果我将一些文件添加到该目录中 PHP 或 Node 会收到信息并运行PathEvent
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 呃!尝试将包发布到 npm 时出现 403

    我正在尝试将包发布到 npm 您可以在此处查看存储库 https github com biowaffeln mdx state https github com biowaffeln mdx state 我登录到 npmnpm login
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi

随机推荐

  • 在 QMenuBar 的另一侧堆叠 QPushButton

    我想堆一些QPushButton我另一边的物体QMenuBar This is how my window looks now And this is how I want it to look like I ve photoshopped
  • Laravel 没有 Eloquent 和数据库迁移?

    我已经是一名 PHP 程序员 12 年了 几乎多次重新发明轮子 为我们的闭源 Web 应用程序构建了自己的框架 该框架作为托管解决方案提供 为所有应用程序使用相同的共享数据库顾客 现在我正在尝试 Laravel 5 并注意到几乎每个示例都使
  • 如何从 PHP 执行 PhantomJS

    我想在本地主机上从 PHP 执行 PhantomJS 任何人都可以解释如何从 PHP 执行 PhantomJS 以及我应该从 phantomjs org 下载什么包 下载PhantomJS 二进制文件 http phantomjs org
  • for 循环中的 __getitem__ 调用

    我正在学习Python 但我什么都不懂 考虑这段代码 class Stack def init self self items def push self item self items append item def pop self r
  • 在两个数据库表中进行循环引用是一个好习惯吗

    在我们的数据库中 我们有两个表 A B 主键为 A id 和 B id 将 B id 作为表 A 中的外键 将 A id 作为表 B 中的外键是否被认为是一个好的做法 这将允许我们在表中拥有多对多关系 另一种方法是使用仅包含两列 A id
  • Hive Flutter 的权限和路径

    我目前正在构建一个应用程序 在其中存储数据并借助 flutter 包 hive 进行增删改查操作 所以我的问题是 我是否需要请求有关存储数据的权限 如果是 那么哪些权限以及存储数据的理想路径应该是什么 谢谢 对于 hive 您不需要添加任何
  • 在c中制作共享数据结构

    我在我的 C 程序中创建了一个数据结构 如下所示 typedef struct int array size t used size t size Array void initArray Array a size t initialSiz
  • 实时验证和复选框、单选、选择组

    Livevalidation 脚本非常适合验证表单 但您应该如何处理复选框 单选和选择组 参见网站 http www livevalidation com http www livevalidation com 这是可以做到的 尽管 Liv
  • 我该如何解决这个问题,res.json不是一个函数

    我的问题如下 我用 guzzle 发送数据 并收到错误 类型错误 res json 不是函数 client new GuzzleHttp Client response client gt request get http localhos
  • 引起:java.lang.NoClassDefFoundError:org/apache/log4j/Logger

    我有一个有趣的问题 在运行时找不到 org apache log4j Logger 类 我正在尝试获得授权 但这就是失败的地方 OAuthAuthorizer oauthAuthorizer new OAuthAuthorizer OAUT
  • 了解协程的执行

    我在 Unity 中工作 但这实际上只是一个 C 问题 所以我希望这是发布此问题的正确部分 无论如何 我仍然很难在脑海中想象脚本的执行情况 特别是当有多个脚本正在运行并且它们都有不同的功能时 最近它变得更加复杂 因为我将 Update Fi
  • 如何使用 Websocket 发送旧消息

    我有一个有效的 Websockets 示例 其中客户端从服务器接收消息 我不确定当客户端连接时应该如何向客户端发送旧消息 Example 每个客户端在连接时提供他们的名字 服务器响应 名称 刚刚连接 对所有客户端 任何新客户都不会收到这些消
  • JSF t:datatable 和 c:forEach 看起来有冲突

    I have
  • 将新的简单 javascript 注入到 magento 后端(作为模块)

    我想在 magento 产品管理后端的一些描述和元字段上添加简单的字符计数器功能 就像下面的屏幕截图一样 我通过将简单的原型脚本添加到在 magento 管理 HTML 上加载的 JS 文件之一来做到这一点 我选择 browser js j
  • 检查Android应用程序中是否使用了Library

    我收到了一些应用程序的遗留代码 不是由我开发的 而是由其他团队开发的 没有文档 它有近 20 多个依赖项 在build gradle 现在 我想清理未使用的库 依赖项 方法是将它们从build gradle 我在谷歌上搜索并发现了这个pro
  • Python 线程化多个 bash 子进程?

    如何使用线程和子进程模块来生成并行 bash 进程 当我启动线程时 第一个答案在这里 如何在Python中使用线程 https stackoverflow com questions 2846653 python multithreadin
  • Android数据绑定与数组的两种方式绑定

    我想通过Android中的数据绑定实现数组上的双向绑定 这是我的代码的简化版本
  • 如何重启kubeadm搭建的k8s集群的kubernetes kube-scheduler

    我已经创建了一个 kubernetes 集群kubeadm下列的这个官方教程 https kubernetes io docs setup production environment tools kubeadm create cluste
  • “成功”HTTPS NSURLRequest 后 WKWebView 空白

    我创建了一个 NSURLRequest HTTPS WKWebView 的委托回调成功返回 没有错误 decidePolicyForNavigationAction 与决策处理程序中的允许枚举一起提供 available iOS 8 0 f
  • 通过ObjectId查询Mongoose Schema

    再次需要你的帮助 希望对于这个项目 我在这里得到的答案将是最后一个 我发现这是一个相当常见的问题 但我已经尝试过另一个问题堆栈溢出帖子 https stackoverflow com questions 7878557 cant find