gpt4 book ai didi

mongodb - PHP/MongoDB : pushing an array value into array field with the $pushAll modifier

转载 作者:可可西里 更新时间:2023-11-01 09:59:52 27 4
gpt4 key购买 nike

假设我有这份文件,我想更新:

array(
'_id' => 123,
'entries' => array(
'4d8aae834f42e06b638d0000' => array(
'user_id' => 2,
'ts' => 'Wed, 23 Mar 2011 19: 37: 55 -0700'
)
)
)

我有一个数组,我想将其附加到条目字段中:

$entries = array(
'4d8aae834f42e06b638d0000' => array('user_id' => 3, 'ts' => 'Wed, 21 Mar 2011 19: 37: 55 -0700')
'4d8aae834f42e06b638d3219' => array('user_id' => 4, 'ts' => 'Wed, 22 Mar 2011 19: 37: 55 -0700')
);

尝试的查询:

$updateData = array(
'$pushAll' => array(
'entries' => $entries
)
);

$db->update('journal', array('_id' => 123), $updateData, array('upsert' => true));

上述查询不会附加新数据。将修饰符从 $pushAll 更改为 $set 显然不会起作用,因为它只会替换那里已经存在的内容。我试过 $addToSet 也没有用。我现在别无选择。

这就是我希望文档以这样的方式结束:

array(
'_id' => 123,
'entries' => array(
'4d8aae834f42e06b638d0000' => array(
'user_id' => 2,
'ts' => 'Wed, 23 Mar 2011 19: 37: 55 -0700'
),
'4d8aae834f42e06b638d0000' => array(
'user_id' => 3,
'ts' => 'Wed, 21 Mar 2011 19: 37: 55 -0700'
),
'4d8aae834f42e06b638d3219' => array(
'user_id' => 4,
'ts' => 'Wed, 20 Mar 2011 19: 37: 55 -0700'
)
)
)

提前致谢。

最佳答案

经过更多测试;如果有人感兴趣,我已经找到了可行的解决方案。

在您的新数据中使用前缀“entries”(或您正在更新的任何字段名称)和修饰符“$set”来设置键就可以了。

$entries = array(
'entries.4d8aae834f42e06b638d0000' => array('user_id' => 3, 'ts' => 'Wed, 21 Mar 2011 19: 37: 55 -0700')
'entries.4d8aae834f42e06b638d3219' => array('user_id' => 4, 'ts' => 'Wed, 22 Mar 2011 19: 37: 55 -0700')
);

对于更新:

$updateData = array(
'$set' => $entries
);

$db->update('journal', array('_id' => 123), $updateData, array('upsert' => true));

关于mongodb - PHP/MongoDB : pushing an array value into array field with the $pushAll modifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com