【发布时间】:2016-06-10 11:38:03
【问题描述】:
在 Mysql 中,我可以从另一个 Select 中进行 Select。 所以我会问我是否可以在 Mongodb 中做同样的事情。
为了更多解释,我需要用这个集合的history 对象中的最后一个dateTransaction 来检索特定userOwner 的事务。所以如果这个 userOwner 不在最后一个历史记录中,我们应该'不检索此交易。
我一开始使用这个查询:
@Query(value = "{'history':{'$elemMatch':{'userOwner': ?0}}}")
但它会返回所有元素,即使是该 userOwner 不包含最后一个“dateTransaction”的元素。
所以我的目标是查询它为每个事务返回的查询只是最后一个 dateTransaction 与“历史”数组的 userOwner :
.find({},{dateTransaction: {$slice: 1} }).limit(1)
然后从这个做另一个查询。
任何人都有想法或例子。
Tnx
这是我的收藏,名为“piece”:
{
"_id" : ObjectId("1"),
"history" : [{
"userOwner" : "3",
"dateTransaction" : ISODate("2016-05-30T00:00:00.000+0000"),
}, {
"userOwner" : "1",
"dateTransaction" : ISODate("2016-05-26T00:00:00.000+0000"),
}, {
"userOwner" : "2",
"dateTransaction" : ISODate("2016-05-23T00:00:00.000+0000"),
}
]
}{
"_id" : ObjectId("2"),
"transactions" : [{
"userOwner" : "2",
"dateTransaction" : ISODate("2016-05-26T00:00:00.000+0000"),
}, {
"userOwner" : "3",
"dateTransaction" : ISODate("2016-05-15T00:00:00.000+0000"),
}
]
}{
"_id" : ObjectId("3"),
"transactions" : [{
"userOwner" : "2",
"dateTransaction" : ISODate("2016-05-26T00:00:00.000+0000"),
}, {
"userOwner" : "1",
"dateTransaction" : ISODate("2016-05-15T00:00:00.000+0000"),
}
]
}
例如,userOwner 2 的结果应该是:
{
"_id" : ObjectId("2"),
"transactions" : [{
"userOwner" : "2",
"dateTransaction" : ISODate("2016-05-26T00:00:00.000+0000"),
}, {
"userOwner" : "3",
"dateTransaction" : ISODate("2016-05-15T00:00:00.000+0000"),
}
]
}{
"_id" : ObjectId("3"),
"transactions" : [{
"userOwner" : "2",
"dateTransaction" : ISODate("2016-05-26T00:00:00.000+0000"),
}, {
"userOwner" : "1",
"dateTransaction" : ISODate("2016-05-15T00:00:00.000+0000"),
}
]
}
【问题讨论】:
-
您能补充一些详细信息吗?你知道你的头是什么,我们不是:-)
-
我的问题可以理解吗?我需要帮助。
-
只有一个或多个集合吗? select from select可以有很多含义吗?
-
这是一个名为“piece”的集合
-
起初谢谢...这不是我搜索的内容,而且很长。最后,我使用了 java...我想要的只是一个简单的 mongo 查询,将其放在前面mongorepository 的方法。
标签: mongodb mongodb-query spring-data-mongodb