在使用 MongoDB 时,我似乎遇到了障碍,并且想知道是否有任何方法,而无需修改我的数据库结构。现在我的数据库结构如下:
Company=
{
_id:1,
properties:[
{
property_id: 1
tags : [
{
tag_id: 1
tag_value: 1000
channels: [
{
channel_id:1
channel_name:"test1"
},
{
channel_id:2
channel_name:"test2"
}]
},
{
tag_id:2
tag_value: 2500
channels: [
{
channel_id:2
channel_name:"test2"
},
{
channel_id:3
channel_name:"test3"
}]
}]
},
{
property_id: 2
tags : [
{
tag_id: 3
tag_value: 500
channels: [
{
channel_id:1
channel_name:"test1"
},
{
channel_id:3
channel_name:"test3"
}]
},
{
tag_id: 4
tag_value: 5000
channels: [
{
channel_id:1
channel_name:"test1"
}]
}]
}]
}
我遇到了一个问题,我无法找到更新属性中特定 tag_id 的方法。比如我想把属性2中tag_id 4的值改为100。或者我想给tag_id 3中的通道数组添加一个通道。
我想做的是类似于这样的事情:
db.company.update({_id:1, "properties.property_id":2, "tags.tag_id":4}, {"properties.$.tags.$.tag_value":100});
但是我知道当前版本的 MongoDB 不支持这一点,它已经在 JIRA 中。所以我的问题是,无论如何要更新文档的值,您需要指定两个不同的条件才能访问它。我知道我可以做 properties.1.tags.0,但是我不知道我的数组的顺序,我的查询将以编程方式运行。
任何帮助都会很棒,即使是我必须重组我的桌子的构造。
谢谢