【问题标题】:List specific data within a collection列出集合中的特定数据
【发布时间】:2012-12-22 20:53:35
【问题描述】:

我有一个 Admin 表,如下所示:

{ "_id" : "userID1", "_class" : "com.test.Admin", "projectList" : 
[     {       "projectID" : "project1" }, 
      {       "projectID" : "project2" } 
] }
{ "_id" : "userID2", "_class" : "com.test.Admin", "projectList" : 
[     {       "projectID" : "project3" }, 
      {       "projectID" : "project4" } 
] }

我需要一种方法来列出 Admin 集合中的所有项目(即从每个文档中获取所有“projectList”) 如何使用 java 驱动程序进行一次查询来获取所有只有数据的 projectList!

我目前使用的方法是获取所有管理员。 然后编写一些java代码来获取每个Admin的所有项目。 但是,我不喜欢我目前的做法。

【问题讨论】:

  • 您的要求是否与检查 projectList 不是 null 相同?我相信你可以在这里使用聚合框架,但是你的方法可能是最好的
  • 你的意思是从性能方面来说,Java 会比 Mongo 更好地处理它。好像我在使用 SQL,最好通过 SQL Server 来代替!

标签: mongodb spring-data mongodb-java


【解决方案1】:

将其转换为您的 Java 驱动程序:

db.admin.find({ projectList : {$exists : true}}, {projectList: 1})

检查每个projectList属性是否存在,然后使用投影,只返回每个匹配文档的projectList属性。

可能类似于(我从未使用过 Java 驱动程序):

query = new BasicDBObject("projectList", new BasicDBObject("$exists", true));

cursor = find(query, BasicDBObject("projectList", 1);

【讨论】:

  • 我试过了:DBCollection db = mongoOperations.getCollection("admin"); BasicDBObject myQuery = new BasicDBObject("projectList", new BasicDBObject("$exists", true)).append("projectList", 1);对象结果 = db.find(myQuery);
  • 但是它只返回一个管理员!
  • 它返回一个游标。一次一个。
猜你喜欢
  • 2022-11-12
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 2020-06-17
  • 2015-04-04
  • 1970-01-01
  • 2013-04-30
  • 2022-06-12
相关资源
最近更新 更多