假设我有一个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为这个查询提供正确的语法吗?
抱歉,这真的不是一个有效的问题。我在问题中引用的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类的