当前位置: 首页 > 知识库问答 >
问题:

复合密钥的mongoTemplate查询

劳星晖
2023-03-14

假设我有一个mongo集合,如下所示:

/* 0 */
{
    "_id" : {
        "index" : "index1",
        "version" : 1
        }
}

/* 1 */
{
    "_id" : {
        "index" : "index2",
        "version" : 2
    }
}

/* 2 */
{
    "_id" : {
        "index" : "index1",
        "version" : 3
    }
}

我想使用Spring的mongoTemplate编写一个查询,只检索那些id.index=index1的文档。

使用mongo shell,我可以编写以下查询:

db.collectionName.find({"_id.index" : "index1"})

然而,我认为使用mongoTemplate会起作用的东西却不起作用。我尝试过:

Query query = new Query();
query.addCriteria(Criteria.where("_id.index").is("index1"));
mongoTemplate.find(query, SomeJavaObject.class, COLLECTION_NAME);

有人可以帮助我使用mongoTemplate为这个查询提供正确的语法吗?

共有1个答案

东郭存
2023-03-14

抱歉,这真的不是一个有效的问题。我在问题中引用的mongoTemplate查询确实有效。我用错误的id.index调用它,哎呀:)

我似乎无法删除该问题,但它可能会帮助某人进行复合键查询。。。

 类似资料:
  • 问题内容: 我刚刚开始使用MongoDb,我注意到我有很多重复的记录,这些记录本来就是唯一的。我想知道如何对数据使用组合键,并且正在寻找有关如何创建它们的信息。最后,我使用Java来访问mongo和morphia作为我的ORM层,因此将您的答案中的内容包括在内是非常棒的。 Morphia:http : //code.google.com/p/morphia/ 问题答案: 您也可以将对象用于_id字

  • 用户详细信息 有人能看出我做错了什么吗?

  • 问题内容: 我需要了解超级密钥和复合密钥之间的区别。我发现的例子更加令人困惑。您能简单说明一下有什么区别吗?谢谢 问题答案: 超级键唯一地标识一行。它可以由一列或多列组成。复合键是由多个列组成的键。 如果超级键由多列组成,则它也是一个复合键。 如果复合键唯一地标识一行,则它也是超级键。 我看不到“超级密钥”这个名称使用过多:通常只称其为“唯一密钥”。

  • 我尝试用JPA连接两个表 第一个表与实体ReportTripSing相关联第二个表与实体TripData相关联第二个表的主键用复合键(实体TripDataPK)描述 如您所见,我想将ReportTripSingle与TripData结合起来 它不起作用:( 这是堆栈跟踪: 原因:组织。冬眠AnnotationException:com的referencedColumnNames(FTP\U ID)

  • 问题内容: 我想为InnoDB MySQL表创建类似于MyISAM的行为。我想要一个复合主键: 主键(id1,id2) 其中id1根据id2的值自动递增。用InnoDB做到这一点的最佳方法是什么? 问题答案: 您可以使用此BEFORE INSERT触发器来替换零个id值- 然后插入零值(id1或id2)以生成新值-

  • 假设我想要一个复合键作为采购订单实体的street,city。 下面是我如何识别做这件事, 我想明白@AttributeOverrides注释到底是做什么的?即使我将colomn name更改为something STREET1,我仍然看到使用列名street创建的表。那么column=@column(name=“street”))在这里做什么。 另外,我可以将它作为PurchaseOrder类的