【问题标题】:Query to find a subdocument in MongoDB查询以在 MongoDB 中查找子文档
【发布时间】:2017-09-25 21:28:02
【问题描述】:

好的,我有一个简单的问题。我在 MongoDB 中有一个简单的文档,其中包含一个名为“penalties”的子文档。 现在我想通过子文档(“penalties”)中的字符串找到文档(这里带有_id“Cammeritz”),例如“penaltyid = 0f77d885-6597-3f47-afb1-0cee2ea3ece1”。你能帮我吗?最好是对 Java 的解释,但如果您只是帮助处理一个普通的 MongoDB 查询也没关系。

{
    "_id" : "Cammeritz",
    "penalties" : [ 
        {
            "_id" : null,
            "date" : ISODate("2017-09-25T20:01:23.582Z"),
            "penaltyid" : "0f77d885-6597-3f47-afb1-0cee2ea3ece1",
            "reason" : "Hacking",
            "teammember" : "Luis",
            "type" : "ban"
        }, 
        {
            "_id" : null,
            "date" : ISODate("2017-09-25T20:01:23.594Z"),
            "penaltyid" : "7f5411b0-e66a-33b3-ac4f-4f3159aa88a9",
            "reason" : "Spam",
            "teammember" : "BluingFX",
            "type" : "kick"
        }
    ],
    "isBanned" : true,
    "isMuted" : false
}

【问题讨论】:

标签: java database mongodb mongodb-query bson


【解决方案1】:

糟糕,我误读了您的问题。您需要使用点表示法。 db.collection.find( { penalties.penaltyid: '0f77d885-6597-3f47-afb1-0cee2ea3ece1' } ) 欲了解更多信息,请参阅 Query on a Nested Field


原答案:

db.collection.find( { penalties: "0f77d885-6597-3f47-afb1-0cee2ea3ece1" } ) 应该可以工作。有关更多信息,请参阅 mongodb 文档中的 Query an Array for an Element。我对 Java 不是很熟悉,所以帮不上什么忙。

【讨论】:

  • 基本上我的 MongoDB GUI (Robo) 给了我一个错误:“错误:第 1 行:意外的令牌。”
  • edit:我认为这是我的客户端的问题,在 Java 中它运行良好,所以对于需要答案的每个人来说,这里是: Document d = getCollection().find(eq("惩罚.penaltyid", s)).first();
猜你喜欢
  • 1970-01-01
  • 2021-07-25
  • 2016-08-25
  • 2016-04-18
  • 1970-01-01
  • 2018-09-04
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多