如何避免Mongo数组中的重复对象

时间:2019-06-10 10:11:34

标签: php mongodb symfony

我正在尝试创建任务集合,其中每个用户都有自己的对象,并且他的任务划分为不同的日期。不幸的是,当我尝试为现有日期添加新任务时,mongo复制了day对象。我将facile-it / mongodb-bundle用于Symfony

那是我的代码:

$collection = $this->mongoConnection->selectCollection(Table::READ_MONGO_USER_TASKS);

if($collection->countDocuments(['user_id' => $userId->toString()]) === 0) {
    $this->createUserDocument($collection, $userId);
}

$task = [
    'id' => $event->taskId()->toString(),
    'title' => $event->title()
];

$collection->updateOne(
    [
        'user_id' => $userId->toString()
    ],
    [
        '$addToSet' => [
            'days' => [
                'date' => $deadlineDate,
                'tasks_list' => [$task]
            ]
        ]
    ]
);

当同一天有2个或更多任务时,我会收到类似以下内容: compass view

我应该怎么做才能使其按预期工作?

1 个答案:

答案 0 :(得分:1)

如果要为现有日期添加新任务,则应在查询的第一个参数中而不是第二个参数中传递日期。您将使用特定的user_id和日期更新集合。 像这样

[
    'user_id'   => $userId->toString(),
    'days.date' => $deadLineDate
]
相关问题