我必须将属于多个实体的数据存储在一个集合中。但是当我查询然后返回时,我不想在结果中出现不需要的记录。我们如何使用spring做到这一点?下面是我到目前为止所做的。
1。我在实体中给出了相同的集合名称,如下所示。
@Document(collection = "livingThings")
@Data
public class AnimalEntity {
//contains id, type, bla, bla
}
@Document(collection = "livingThings")
@Data
public class HumanEntity {
//contains id, gender, address
}
2。我创建了独立的mongoRepository接口
public interface AnimalRepository implements MongoRepository<AnimalEntity, String> {
}
public interface HumanRepository implements MongoRepository<HumanEntity, String> {
}
3。问题是
当我执行animalRepo.findAll或humanRepo.findAll时,我会获得集合中所有可用的记录。
4。我期望的是
animalRepo.findAll仅返回文档结构与AnimalEntity相同的那些记录。
非常感谢您的时间和耐心参加此查询。
答案 0 :(得分:0)
MongoDB自动将_class字段添加到集合中的实体。即使这不是最佳解决方案,也可以尝试以下方法:
# create function based on values
def get_values(row):
if row['Type'] == 'GCP':
return row['Key'][:3]
elif row['Type'] == 'GTIN' and row['Key'][1:6] == '00000':
return row['Key'][6:9]
elif row['Type'] == 'GTIN' and row['Key'][2:7] != '00000':
return row['Key'][1:4]
# convert to string
df['Key'] = df['Key'].astype(str)
# now use apply function
df['new'] = df.apply(get_values, axis=1)
Type Key new
0 GTIN 1234589564652344 234
1 GCP 1564546545452344 156
2 GTIN 6000005645324234 564