我有一个 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)
有任何想法吗 ?
我正在尝试将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
我正在使用 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 中没有看到这样做的方法。有任何想法吗?
我有两个表: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) 我有一个带有 $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。
我想在我的项目中使用弹簧投影。我正在按照此网址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 服务器上运行。
谢谢查哈特
让我们考虑这些实体
@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) 如何使用 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”。但文件没有改变。
我有一个 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,...),但由于可能有很多字段,我想知道是否存在一种方法可以自动将它们全部包含在内。
提前致谢 !
有没有办法改进这个交互式 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)
projection ×10
mongodb ×4
hibernate ×2
javascript ×2
spring ×2
cartopy ×1
criteria ×1
d3.js ×1
geo ×1
geometry ×1
go ×1
interactive ×1
matplotlib ×1
mongo-go ×1
spring-data ×1
struct ×1
trigonometry ×1