限制结果中的字段

2024-01-18

我正在使用 MongoDB v3.0.1 和 MongoDB Java 驱动程序 3.0.0-RC1。

我有一个用户集合,其中包含“用户名”、“名字”、“姓氏”、“电子邮件”等字段。

现在我想选择所有用户,但仅限于“用户名”、“名字”和“姓氏”字段。

在 Mongo-Shell 上它正在使用db.user.find({}, { "username" : true , "firstname" : true , "lastname" : true})

但是我怎样才能在Java中做到这一点呢?我尝试过final BasicDBObject query = new BasicDBObject("{}", new BasicDBObject("_id", true)); final MongoCursor<Document> usersCursor = col.find(query)

为此,我得到一个空结果,因为它被翻译为{ "{}" : { "_id" : true , "firstname" : true , "lastname" : true}}.

我也用 BasicDBList 尝试过,但这不被接受col.find()

对于“旧”Mongo 2.x 驱动程序,我会使用new BasicDBObject(BasicDBObject(), new BasicDBObject("username", true).append("firstname", true).append("lastname", true)

有可能这样做还是我必须获取所有字段?

问候
Sören


对于 3.0.0 Java 驱动程序中的新 CRUD API,正确的方法是使用与 MongoCollection.find() 链接的投影方法。由于投影方法采用 Bson 接口的实例,因此您可以使用许多不同的类来指定投影:

    // using BasicDBObject
    collection.find().projection(new BasicDBObject("username", true)
                                 .append("lastname", true)
                                 .append("firstname", true))

    // using the new Document class
    collection.find().projection(new Document("username", true)
                                 .append("lastname", true)
                                 .append("firstname", true));

    // Using the new Projections builder
    collection.find().projection(Projections.include("username", "lastname", "firstname"));

至于你说的在 2.x 驱动程序中的工作方式,这是不可能的,因为

new BasicDBObject(BasicDBObject(), BasicDBObject("username", true)
                                  .append("firstname", true)
                                  .append("lastname", true)

不编译。我不确定您在 2.x 中到底做了什么,但使用 2.x 中的 DBCollection 类(在 3.0 驱动程序中仍然受支持)完成此操作的正确方法是:

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

限制结果中的字段 的相关文章

随机推荐

  • 如何将 UITextField 中用作 leftView 的 UILabel 与 textField 的文本垂直对齐?

    我正在使用一个UILabel as the leftView of a UITextField 问题是文本字段的文本高于标签的文本 这是我到目前为止使用过的代码 UILabel startsWith UILabel alloc init s
  • React-Navigation:使用/更改带有 Redux 状态的标题标题

    是否可以访问 React Navigation 的标题标题中的整个 Redux 状态 The 官方文档 https reactnavigation org docs intro headers表示导航对应的状态是可访问的 static na
  • 交叉编译中的CMake CMAKE_AUTOMOC

    我有以下问题 我尝试使用 CMake 中构建的本机机制进行交叉编译 我准备了以下 toolchain cmake 文件 set CMAKE SYSTEM NAME Linux set CMAKE SYSTEM PROCESSOR arm s
  • 具有复选框行为的自定义列表视图,如 Gmail 应用程序

    我在这里阅读了很多有关列表视图和复选框的帖子 他们中的很多人都使用 CheckedTextView 或扩展它 我想实现一个带有复选框行为的自定义列表视图 就像在 android 邮件应用程序 Gingerbread ICS 上一样 只有复选
  • spring security 2.0.7 和 spring 2.5 的登录表单问题

    您好 我正在尝试在我的应用程序上放置一个登录页面 我的login jsp是
  • 弱引用的其他用途?

    我知道弱引用是一个很好的选择记忆 http en wikipedia org wiki Memoization潜在的大量数据 以及维基百科关于弱引用的文章 http en wikipedia org wiki Weak reference仅
  • 如何写入来自 Firebase 的数据以快速存储?

    首先 我正在使用 React Native 我正在从 Firebase 获取数据并希望快速写入存储 通过 Redux 但这不起作用 您可以在下面找到我的所有代码 功能 async getTumData uid const selectedG
  • 如果会话因无活动而过期,则注销并重定向到登录页面

    我正在尝试使用 Flask 更新一个网站 其中用户拥有帐户并且能够登录 如果超过 10 分钟没有活动 我想让用户会话过期并注销 并将用户重定向到登录页面 我想更新它 app before request下面是我的代码 如何检查登录时间并检查
  • 无法使用mockito模拟私有方法

    我正在尝试使用 power mockito 来模拟私有方法 读完这篇文章后我得到了一些想法 并且遵循了相同的结构 example https stackoverflow com questions 28121177 mock private
  • 如何将音频流式传输到 OpenAL Sources 中?

    我刚刚开始使用 OpenAL 我已成功将 WAV 文件加载到其中 并成功播放它们 这很容易 现在 我需要能够将音乐流式传输到 OpenAL 中 而不是将整个文件加载到其中 虽然这对于声音效果等有好处 但正如您可能知道的那样 对于音乐来说可能
  • 在 Oracle SQL 中 Case 语句的 When 部分中使用别名

    我已经尝试查找一段时间了 是否可以使用前面在 select 语句中声明的别名 是否可以在 Oracle SQL 的 case 语句中稍后的 case 中使用它 我发现的大多数结果都是关于如何根据案例陈述创建别名 这不是同一个问题 一个简单的
  • 防止用户在 Azure Devops (VSTS) 中创建没有父项的工作项

    我想阻止用户直接创建工作项 任务 任务只能通过使用用户故事中的添加子选项来创建 而不能直接创建 是否可以 防止用户在 Azure Devops VSTS 中创建没有父项的工作项 有一个解决方法 但不是完整的解决方案 您可以检查它是否适合您
  • git push heroku master 说“一切都是最新的”,但该应用程序不是最新的

    我在 Heroku 上有一个运行旧代码的应用程序 我做了一个小改变并提交了改变 然后我跑了 git push heroku master 它会说 Fetching repository done Everything up to date
  • Ruby on Rails 领域平均水平如何?

    有没有一种简单的方法来获取集合中属性的平均值 例如 每个用户都有一个分数 给定一组用户 users 如何获得该组的平均分数 有类似 users average score 的东西吗 我想我在数据库字段中遇到过类似的东西 但我需要它为集合工作
  • 如何关闭 MFMailComposeViewController?

    我想从我的 Swift 应用程序发送一封电子邮件 它运行良好 它发送了电子邮件 然而 发送电子邮件后 布局并没有退出 我想在发送电子邮件后退出布局 当我按下 取消 删除草稿 或 保存草稿 按钮时 我也希望出现这种行为 这是我必须发送电子邮件
  • 如何在没有 SelectionStart 的情况下设置 TextBox 光标位置

    我有一个 Windows 窗体文本框 后台线程每秒更新其值 如果我将光标放在文本框中 它将在下次更新时丢失其当前位置 文本选择也是如此 我试着这样解决它 protected void SetTextProgrammatically stri
  • 单个页面中的两个 xmlHttpRequest

    我对 ajax 相当陌生 但我正在尝试使用 javascript 实现两个简单的调用来动态更改页面上的两个单独的 div 我一次使用一个调用没有问题 但是当我使用两个调用时 似乎第二个 xmlhttprequest 接管第一个调用并写入两个
  • 使用不完全模式匹配作为过滤器?

    假设我有以下代码 type Vehicle Car of string int Bike of string let xs Car family 8 Bike racing Car sports 2 Bike chopper 我可以在命令式
  • 如何禁止显示后续异常的父异常(原因)

    我知道raise from None并已阅读当我提出自己的异常作为响应时 如何更轻松地抑制以前的异常 https stackoverflow com questions 17091520 how can i more easily supp
  • 限制结果中的字段

    我正在使用 MongoDB v3 0 1 和 MongoDB Java 驱动程序 3 0 0 RC1 我有一个用户集合 其中包含 用户名 名字 姓氏 电子邮件 等字段 现在我想选择所有用户 但仅限于 用户名 名字 和 姓氏 字段 在 Mon