【问题标题】:Set a data to a specific name with spring & mongodb使用 spring 和 mongodb 将数据设置为特定名称
【发布时间】:2016-06-27 07:27:23
【问题描述】:

我的 json 数据

[{"cameraid":"000000001","timestamp":"2016-06-17 23:08","filename":"7e3800fbd0557c683874ed2f41ed7057"},

 {"cameraid":"000000002","timestamp":"2016-06-17 23:08","filename":"b260cc730da88a6af4e5038d6e1e32db"}]

如何让cameraid 链接到特定名称?

例如我的cameraid "000000001" 被称为bedok

有人知道怎么做吗?

【问题讨论】:

  • 您是否有一组有限的名称,或者每个唯一的 id 都应该有一个唯一的名称?另外,这些独特的名字是从哪里来的?从上面的帖子中不清楚你是如何确定bedok的?
  • @notionquest Bedok 的名字只是一个例子。
  • @notionquest 但你知道我在做什么吗?我坚持这个。

标签: spring mongodb mongodb-query


【解决方案1】:

使用名称创建另一个集合(我们称之为 db_name)并将 cameraid 链接到 db_name 集合的 _id。这样您就可以使用 cameraid 获取名称。这更像是关系型数据库(RDBMS)中的主键和外键概念。

更多信息请参见此处的代码:Primary Key and Foreign Key Concept in MongoDB

【讨论】:

  • 是否可以在我当前的集合上再创建一个数据。每当我想将“000000001”存储到数据库中时,它就会将bedok01存储到数据库中。如果我将不同的数据(例如“000000002”)存储到数据库中,它将存储bedok02。你明白吗?
【解决方案2】:

假设您要为特定的cameraid 添加一个name 字段,

尝试以下查询:-

db.collname.update({"cameraid":"000000001"},{$set : {name : 'bedok'}});

编辑:-

上述查询将只更新一条与查询{"cameraid":"000000001"}匹配的记录。

multi:true 添加到查询中,添加到多条记录中。

 db.collname.update({"cameraid":"000000001"},{$set : {name : 'bedok'}},{multi : true});

现在它将更新与查询 {"cameraid":"000000001"} 匹配的所有记录。

【讨论】:

  • 我试过这段代码,但为什么只更新一个cameraid为“000000001”,因为我有3个相同的cameraid。
  • 如果有多个记录,你必须做 multi true。我给出的查询基于您显示的数据库结构。将更新答案。
  • 更新了答案。你现在可以试试。
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
相关资源
最近更新 更多