我认为这个问题可能与我的Mongo Document Koltin Data类有关,但对于我们的业务案例,我们需要允许用户添加任何JSON字段来描述他们的RF数据集。
扩展BasicDBObject是我找到的最好方法。
保存SigMfMetaDocument时返回的mono不包含_id字段。
我无法弄清楚为什么save方法不会返回包含SigMfDocument的Mono和_id
如果有更好的方法可以为ReactiveMongoRepository创建一个可以动态接受任何字段的Type,那我就听见了。
@Document(collection = "sigmfmeta")
class SigMfMetaDocument : BasicDBObject {
@Id
@JsonProperty("id")
val id: String? = UUID.randomUUID().toString()
constructor(map: Map<String, Any>) : super(map)
constructor() : super()
constructor(key: String, value: Object): super()
}
@Repository
interface SigMfMetaRepository : ReactiveMongoRepository<SigMfMetaDocument, String>
答案 0 :(得分:2)
因此,我找到了一种解决我的用例的方法。我最初是假设文档中有关save方法的描述适用 (保存给定的实体。将返回的实例用于进一步的操作,因为保存操作可能已完全更改了实体实例)。
我认为Mongo自动插入@XmlRootElement(name="City")
@XmlAccessorType(XmlAccessType.FIELD)
public class City {
private String country;
private String state;
private String city;
private String code;
@XmlElement(name = "CountryRegion") // will this work?
@XmlAttribute(name = "Name")
public void setCountry (String country){
this.country = country;
}
@XmlElement(name = "State")
@XmlAttribute(name = "Name")
public void setState (String state){
this.state = state;
}
@XmlElement(name = "City")
@XmlAttribute(name = "Name")
public void setCity (String city){
this.city = city;
}
@XmlAttribute(name = "Code")
public void setCode (String code){
this.code = code;
}
}
值将适用于此描述。
我将模型更改为:
_id
这样,保存一些业务逻辑后,我便获得了_id值。再次以这种方式定义我的模型,因为我们接受的元数据文件需要允许客户端添加他们希望描述RF测量数据的二进制文件的任何字段。