ReactiveMongoRepository / MongoRepository不返回_id字段

时间:2018-06-18 21:06:04

标签: mongodb kotlin

我认为这个问题可能与我的Mongo Document Koltin Data类有关,但对于我们的业务案例,我们需要允许用户添加任何JSON字段来描述他们的RF数据集。

扩展BasicDBObject是我找到的最好方法。

保存SigMfMetaDocument时返回的mono不包含_id字段。

  1. 我无法弄清楚为什么save方法不会返回包含SigMfDocument的Mono和_id

  2. 如果有更好的方法可以为ReactiveMongoRepository创建一个可以动态接受任何字段的Type,那我就听见了。

  3. @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>

1 个答案:

答案 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测量数据的二进制文件的任何字段。