在Spring boot中,将字符串的十六进制转换为ObjectId以在MongoDB中进行合并

问题描述 投票:0回答:1

我有下面的代码

@Override
public List<Snapshots> getData(final String modelId) {

    Criteria criteria = Criteria.where("modelId").is(new ObjectId(modelId));

它不返回任何结果。等效于下面的mongo查询

db.Snapshots.aggregate([
      { 
     "$match":{ 
        "modelId":{ 
           "$oid":"5db6ce13f74c7f9f982f2598"
     }
  },

我知道以上内容将不起作用,因为mongo不知道什么是“ $ oid is”。如果将其更改为ObjectID(“ 5db6ce13f74c7f9f982f2598”),则可以在mongo shell中使用。请让我知道如何从春季传递此十六进制ID。该modelId类似于另一个集合的objectID,在Snapshots集合中被称为外键。

mongodb spring-boot mongodb-query spring-data spring-data-mongodb
1个回答
0
投票

您可以保存(并搜索)十六进制字符串或ObjectId

© www.soinside.com 2019 - 2024. All rights reserved.