标签: projection

使用 Spring 数据和 QueryDSL 对 MongoDb 查询进行投影

我有一个 Spring MVC/Spring Data/Mongo DB 应用程序。我已经根据 spring 数据文档设置了我的环境,并且我的存储库工作正常(我可以使用谓词执行查询)

我想知道是否可以在进行投影时执行类型安全查询(使用 Spring Data 和 QueryDSL)(我只想要一个非常大的文档的几个字段)。

QueryDSL 文档给出了 Hibernate 的示例,但声明它可以在所有模块中完成QueryDSL 文档中完成(但我还没有找到如何使用 Mongo 来实现)

这是休眠的代码片段

class CustomerDTO {

  @QueryProjection
  public CustomerDTO(long id, String name){
     ...
 }

 QCustomer customer = QCustomer.customer;
 JPQLQuery query = new HibernateQuery(session);
 List<CustomerDTO> dtos = qry.from(customer).list(new QCustomerDTO(customer.id,    customer.name));     
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

spring projection mongodb spring-data

6
推荐指数
1
解决办法
4110
查看次数

将lat/lon转换为像素坐标?

我正在尝试将lat/lon对转换为像素坐标.我找到了这个墨卡托投影,但我不明白代码.x_adj,y_adj变量的因素是什么?当我运行没有这些常量的代码时,我的lat/lon对不在我的地图上,x和y像素坐标不是我想要的.

function get_xy(lat, lng)
{
var mapWidth=2058;
var mapHeight=1746;
var factor=.404;
var x_adj=-391;
var y_adj=37;
var x = (mapWidth*(180+lng)/360)%mapWidth+(mapWidth/2);
var latRad = lat*Math.PI/180;
var mercN = Math.log(Math.tan((Math.PI/4)+(latRad/2)));
var y = (mapHeight/2)-(mapWidth*mercN/(2*Math.PI));
return { x: x*factor+x_adj,y: y*factor+y_adj}
}
Run Code Online (Sandbox Code Playgroud)

资料来源:http://webdesignerwall.com/tutorials/interactive-world-javascript-map/comment-page-1? replytocom = 103225

[2] 隐蔽纬度/经度指向墨卡托投影上的像素(x,y)

javascript geometry trigonometry projection

6
推荐指数
1
解决办法
2万
查看次数

如何确定一个点是否隐藏在投影上?

我正在使用 D3 和 D3.geo.projection 创建一个带有数据点的旋转地球仪,这是一个相当简单的世界地球仪界面。

当我只是用圆圈绘制点时,一切都很好(即当它们在地平线后面旋转时,点“黯然失色”):

svg.append("g")
    .attr("class","points")
    .selectAll("text")
    .data(places.features)
  .enter()

  //for circle-point------------------------------
  .append("path")
  .attr("d", path.pointRadius(function(d) {
      if (d.properties)
        return 3+(4*d.properties.scalerank);
                    }))
    .attr("d", path)

    .attr("class", "point")
    .on("click",pointClick)
;
Run Code Online (Sandbox Code Playgroud)

但现在我试图绘制符号而不是圆圈:

svg.append("g")
    .attr("class","points")
    .selectAll("text")
    .data(places.features)
  .enter()
    //for image-------------------------------------
    .append("image")
    .attr("xlink:href", "img/x_symbol.png")
    .attr("x", -12)
    .attr("y", -12)
    .attr("width", 24)
    .attr("height", 24)
    .attr("transform", function(d) {
        return "translate(" + projection([
          d.properties.longitude,
          d.properties.latitude
        ]) + ")"
      })

    .attr("class", "point")
    .on("click",pointClick)
;
Run Code Online (Sandbox Code Playgroud)

虽然这是有效的,并且符号绘制在地球上的正确位置,但即使它们绕到地球的背面,它们也会持续存在。如果我有办法确定它们是否被遮蔽,我可以使用可见性属性隐藏它们,但是我在 d3.geo.projection 中没有看到这样做的方法。有任何想法吗?

javascript projection geo d3.js

6
推荐指数
2
解决办法
1102
查看次数

休眠条件查询以仅获取特定列

我有两个表:ReportRows 和 DataRows

表格报告行:

@Id
@Column(name = "ID")
private Long id;

@ManyToOne
@JoinColumn(name = "T_REPORT_CODE")
  private Report report;

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "T_DATA_ROWS_ID")
  private DataRow dataRow;
Run Code Online (Sandbox Code Playgroud)

此外还有 getter 和 setter;

表数据行:

@Id
@Column(name = "ID")
    private Long id;

@Column(name = "VALUE_0")
    private String value0;

@Column(name = "VALUE_1")
    private String value1;

@Column(name = "VALUE_2")
    private String value2;

...

@Column(name = "VALUE_30")
    private String value30;
Run Code Online (Sandbox Code Playgroud)

另外getter和setter

Select from ReportRows 和 DataRows 在列出数据时从两个表中获取所有列。我只需要 DataRows 中的几列(我指定了它)。

选择我想要的看起来像这样:

SELECT 
dataRows.value0,
dataRows.value1 …
Run Code Online (Sandbox Code Playgroud)

hibernate criteria projection

6
推荐指数
1
解决办法
1万
查看次数

有条件地在mongodb项目聚合中包含一个字段(_id或其他)?

我有一个带有 $project 阶段的 mongodb 聚合管道,我想仅在满足条件时才包含某些字段。具体来说,我想在一个条件中排除 _id,并在另一个条件中包含第二个字段“second_id”。

我知道(还)不可能从 mongodb $project 中排除字段,但是是否可以有条件地包含它们?

有没有办法有条件地排除 _id 字段?它接受 0 或 1,但是如果我想根据 if 语句确定 0 或 1 呢?这将如何完成?

_id 的伪代码:

$project: { _id: { $ifNull: [ "$user_id", 0 ] } }
Run Code Online (Sandbox Code Playgroud)

它的主要用途是使用 doc.user_id 作为结果 _id,或者如果 user_id 为空,则允许 mongodb 创建一个新的自动增量 _id。

projection mongodb aggregation-framework

6
推荐指数
1
解决办法
3868
查看次数

Spring数据投影不工作

我想在我的项目中使用弹簧投影。我正在按照此网址http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections中提到的方式进行操作

interface NoAddresses {  
  String getFirstName(); 
  String getLastName();  
}
Run Code Online (Sandbox Code Playgroud)

唯一的区别是我的界面是公共的。并且与存储库不在同一包中。这是一个要求吗?

我仍然看到整个实体都被返回,而不仅仅是投影的列。

我有

<dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.10.2.RELEASE</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

不起作用。我需要添加一些依赖项才能使投影正常工作吗?我没有使用 spring-boot,而只是在我的项目中使用 spring-data,在 tomcat 服务器上运行。

谢谢查哈特

spring projection spring-data-jpa

6
推荐指数
0
解决办法
4135
查看次数

spring jpa 嵌套投影生成不正确的查询

让我们考虑这些实体

@Entity
public class Room{

  @Id
  private Integer id;

  private String number;

  private String floor;

  @ManyToOne
  private RoomType roomType;

  // Setters & Getters  
}

@Entity
public class RoomType{

  @Id
  private Integer id;

  private String name;

  private String description;

  private Boolean enabled;

  // Setters & Getters  
}
Run Code Online (Sandbox Code Playgroud)

还有这个用于与存储库类一起投影的接口

public interface RoomList{

    public Number getId();

    public String getNumber();

    public RoomType getRoomType();

    interface RoomType {
        String getName();
    }   

}

@Repository
public interface RoomRepository extends JpaRepository<Room,Integer>{

    public Collection<RoomList> findAllProjectedBy();

}
Run Code Online (Sandbox Code Playgroud)

现在,如果我查看生成的 SQL

select
    room0_.id …
Run Code Online (Sandbox Code Playgroud)

hibernate projection spring-data-jpa

6
推荐指数
1
解决办法
2157
查看次数

如何使用官方 mongo-go-driver 从 mongo 文档中过滤字段

如何使用 mongo-go-driver 过滤字段。用 findopt.Projection 试过了,但没有成功。

type fields struct {
    _id int16
}

s := bson.NewDocument()
filter := bson.NewDocument(bson.EC.ObjectID("_id", starterId))

var opts []findopt.One
opts = append(opts, findopt.Projection(fields{
    _id: 0,
}))

staCon.collection.FindOne(nil, filter, opts...).Decode(s)
Run Code Online (Sandbox Code Playgroud)

最后,我想取消字段“_id”。但文件没有改变。

struct projection go mongodb mongo-go

6
推荐指数
1
解决办法
8245
查看次数

聚合时如何自动添加除一个字段之外的所有字段?

我有一个 mongodb 集合,其中包含具有多个属性(可能很多)的对象。其中之一是另一种对象类型的数组,并且该类型具有布尔属性StateChanged

我想要进行一个查询,返回该集合中的所有记录,并过滤数组以仅获取带有StateChanged = true.

这是我已经做过的:

db.getCollection('Cycles').aggregate([
    {
        $project: {
            _id: 0,
            // Here I could add Field1: 1, Field2: 1,...
            'Subcycles' : {
                $filter : {
                    input: '$Subcycles',
                    as : 'sub',
                    cond: { $eq: ['$$sub.StateChanged',true]}
                }
            }
        }
    }
])
Run Code Online (Sandbox Code Playgroud)

然而,这只给我带来了“Subcycles”系列。我想要的是在根文档中包含其他字段。

我可以在投影中手动指定它们(例如 Field1: 1、Field2: 1,...),但由于可能有很多字段,我想知道是否存在一种方法可以自动将它们全部包含在内。

提前致谢 !

projection mongodb mongodb-query aggregation-framework

6
推荐指数
1
解决办法
2631
查看次数

如何以交互方式更改 cartopy 投影的中心?

有没有办法改进这个交互式 matplotlib/cartopy 脚本的渲染?

请先安装 ipympl https://github.com/matplotlib/ipympl

我还没有找到如何在不实例化新图形的情况下更改中心经度和纬度。

当单击鼠标左键并选择新的投影中心时,此脚本缺乏流动性。我正在寻找https://twojs.org/examples/misc_controls_trackball中的轨迹球行为。

欢迎任何帮助/建议。

%matplotlib widget

import numpy as np
import matplotlib.pyplot as plt
import cartopy
import cartopy.crs as ccrs

fig = plt.figure(figsize=(10,6), layout='constrained')

proj0 = ccrs.PlateCarree()
proj1 = ccrs.Orthographic(0, 80)

ax1 = fig.add_subplot(1, 1, 1, projection=proj1)
ax1.coastlines()
ax1.gridlines(xlocs=np.arange(-180,180,10), ylocs=np.arange(-80,90,10))
ax1.set_global()

def onpress(event):
    global proj1
    if event.button == 1:
        lon, lat = proj0.transform_point(event.xdata, event.ydata, src_crs=proj1)
        proj1 = ccrs.Orthographic(lon, lat)
        ax1 = fig.add_subplot(1, 1, 1, projection=proj1)
        ax1.coastlines()
        ax1.gridlines(xlocs=np.arange(-180,180,10), ylocs=np.arange(-80,90,10))
        ax1.set_global()
        plt.draw()

fig.canvas.mpl_connect('button_press_event', onpress)

plt.show()

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

interactive projection matplotlib cartopy

6
推荐指数
0
解决办法
406
查看次数