【问题标题】:MongoDB and PHP field with same name can be added?可以添加同名的MongoDB和PHP字段吗?
【发布时间】:2014-04-13 21:09:09
【问题描述】:

我有一个问题,我一个人无法解决,所以我在这里,因为我真的需要一些帮助 D

我需要知道是否可以添加具有相同名称的字段,例如,id 和 id 但具有不同的值

$usedWord = array('word' => $word);

//  search for the word based on the array
$found = $collection->findOne($usedWord); 

// If it returns 
if (empty($found)) { // Here, it'll insert

    $info = array('word'=> $word, 
                  'id' => $id, 
                  'path' => $path,
                  'start' => $startOfTheWord, 
                  'end' => $endOfTheWord);
} else { 

} 

$collection->insert($info);

//disc from servidor
$conn->close();

在其他部分,我尝试使用代码添加新的“id”、路径等,问题是,我可以创建另一个“id”、“补丁”等等,或者我应该创建“id1”, path1 等等?

OB:.我使用了 $push 并无法使其工作 =\

【问题讨论】:

  • 你问的不是很清楚。您是否尝试更改现有文档的值或使用数组中的值添加新文档?
  • 您能展示一下您是如何尝试使用推送的吗?它应该工作
  • 我有字段词,对吗?我使用if来查看我通过表单发送的单词是否存在,如果不存在,我将保存数据,如果单词已经存在,那么我只需要添加另一个id,路径,开始和结束.我有 id,我希望 mongo 用不同的数字创建另一个 id,比如 mongo 保存的第一个 id 是 12,新的 id 是 22。所以应该有第一个 id:“12”和第二个 id :22
  • 这是我尝试在 else $filter = array('word'=>$found); 中执行的代码$info = array('id' => $id, 'path' => $path, 'start' => $startWord, 'end' => $endWord); $update = array('$push'=>array('id' => $id, 'path' => $path, 'start' => $startWord, 'end' => $endWord)); $usedWord->update($filter,$update); }

标签: php mongodb push


【解决方案1】:

不确定我是否收到了您的问题,但如果您在这里讨论重复字段,mongo 文档会说什么:

BSON 文档可能有多个同名字段。最多 但是,MongoDB interfaces 表示具有结构的 MongoDB(例如 一个哈希表)不支持重复的字段名称。如果你需要 操作具有多个相同字段的文档 姓名,见驱动documentation for your driver

无论如何,我认为您应该避免文档中出现重复字段,这看起来像是文档结构设计有问题。

【讨论】:

  • 所以..即使我只使用它保存相同类型的数据,也不值得,是吗?我该怎么办? x.x 有什么建议吗?我必须使用重复字段 =\
  • 我不认为您真的必须使用重复字段,总有一种方法可以重新设计您的文档结构并使用嵌入数组或新集合,然后从您的主集合中引用。
  • 我现在有另一个问题,我有这个: db.comida.insert( { _id:1, "pratos":[ {comida:"Lasanha", preco:20.00}, {comida :"Panqueca", preco:15.00} ] } ) 我正在尝试更新 preco: 20.00 但我看不到更新它,我正在使用此代码 db.comida.update( {_id: 4, " pratos.comida": "Lasanha"}, {$set: {"prato.$.preco": 12.99}})
  • @MaksymStrukov:我今天碰巧遇到了这个问题,当 robo3T 说“有效的 json”并将文档插入数据库时​​感到惊讶,似乎 robo3T 的意思是“有效的 BSON”而不是“有效的 json”-此外,由于驱动程序和语言限制,这似乎不会发生在代码中!谢谢你..
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2014-09-12
  • 2017-12-11
相关资源
最近更新 更多