当前位置: 首页 > 面试题库 >

MongoDB嵌套文档搜索

袁华清
2023-03-14
问题内容

我如何在mongodb文档中嵌套文档的地方搜索文档。例如,我有一组私人消息。每条私人消息都有两个嵌套文档-
一个代表发送用户,另一个代表接收使用。两个嵌套文档的格式均为-

userID:34343,名称:Joe Bloggs

我希望能够搜索用户发送的所有邮件(例如,搜索发件人用户的嵌套文档)。

我正在使用Java驱动程序。我是否需要创建一个代表嵌套文档的DBObject?

谢谢


问题答案:

据我了解,你有这样的文档结构:

{
   "someProperty" : 1,
   "sendingUser" : {
               userID : 34343,
               name : "Joe Bloggs"
             },
   "recivingUser" : {
               userID : 34345,
               name : "Joe Bloggs"
             }
}

因此,如果您需要发送用户ID为34345的发送用户,则只需执行以下操作(我认为是这样,因为实际上我正在为mongo使用C#驱动程序):

    DBCollection coll = db.getCollection("privateMessages")

    query = new BasicDBObject();

    query.put("sendingUser.userID", new BasicDBObject("$eq", 34345));

    cur = coll.find(query); // all documents with  sendingUser.userID = 34345 will be //returned by cursor

另请查看Java驱动程序教程



 类似资料:
  • 我想在具有指定 URL 的相应文档中将嵌套的“已爬行”更新为 True。 我对mongodb相当陌生,我似乎无法弄清楚这一点,非常感谢任何帮助。

  • 谁能告诉我我错过了什么吗?我正在尝试使用spring boot mongodb创建一个Mongo集合。 我想创造这样的东西 但我要得到这个 我的领域类是 我的存储库是 控制器是 我的jsp表格是

  • 问题内容: 我正在尝试使用以下映射搜索文档: 我想在“ naam”,“ omschrijving”等中进行搜索,但也想在嵌套文档“ kenmerken”的动态映射中进行搜索,因此我创建了两个搜索查询,但它们似乎都不起作用。 我应该使用布尔还是过滤器?或两者结合? 我什至靠近吗? 问题答案: 由于需要解决方案,因此我决定创建一个单独的字符串字段,在其中分解“ kenmerken”字段。目前,此方法可

  • 我有一个深度嵌套的文档结构,如下所示: 我正在尝试更新集合以插入新配置,如下所示: 我正在mongo(Python)中尝试类似的内容: 但是,我得到了“如果没有包含数组的相应查询字段,则无法应用位置运算符”错误。在mongo这样做的正确方式是什么?这是mongo v2。4.1.

  • 多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):

  • 如果我有一个数据,其结构类似于集合中的单个文档: 有没有办法通过id“childid”搜索嵌入的文档?因为mongo没有索引嵌入文档的_id字段(如果我在这里错了,请纠正我),因为这个查询不起作用:db。收集查找({u id:“childid”}); 另外,请告知我是否有任何其他文档数据库适用于这种树结构的检索数据,其中要求: 查询子级而不必发出联接 查找树中的任何节点的速度与查找根节点的速度一样