Я использую страницу php для вставки новых документов в мою базу данных MongoDB. Я хочу добавить массив авторов в поле документа (authors:['Sally Sue', 'Billy Bob']) через URI.
Вот содержимое моей php-страницы:
<?php
require __DIR__ . '/vendor/autoload.php'; // Composer autoloader
use MongoDB\Driver\Manager as Mongo;
// Set $_GET variables
if (isset($_GET['authors'])){
$authors = explode(',', filter_var($_GET['authors'], FILTER_SANITIZE_STRING));
} else {
$authors = 'N/A';
}
$mongo = new Mongo("mongodb://127.0.0.1:27017/myDB");
$db = new MongoDB\Database($mongo, "myDB");
$collection = $db->selectCollection("articles");
$result = $collection->insertOne([
'authors' => $authors,
]);
print_r($result);
?>
строка URI:
http://x.x.x.x/mySite/insertArticle.php?authors=Sally%20Sue,%20Billy%20Bob
Однако код вставляет мою переменную $authors в виде строки:
Notice: Array to string conversion in /var/www/html/mySite/insertArticle.php on line 17
Как я могу вставить переменную $authors в виде массива? Должен ли я использовать цикл for или есть способ вставить все содержимое массива сразу как одну переменную?
Ой, здесь должна быть строка 16. Это очередь 'authors' => $authors.
Может хотите collection.insertMany() - хотите всех авторов в 1 документе или пару?
Вы можете попробовать как «авторы» => [$authors]
Несколько авторов для 1 документа
@RahulMeshram - Большое спасибо! По какой-то причине я не мог найти никого в Google, говорящего, как это сделать. Они продолжали говорить, что вы должны указывать определенный индекс при обращении к массиву. Работал отлично.
@velkoon Добро пожаловать. Я разместил свой ответ с подтверждениями.






Вы можете попробовать работать с этим кодом следующим образом.
‘authors’ => [$authors]
Пожалуйста, добавьте ссылку на официальный документ mongoDB — это поможет будущим программистам.
Я желаю дружище. У меня на сотовом сложно нажать ctrl+L что ли. Я надеюсь, вы понимаете. Завтра обязательно сделаю
Какая строка номер 61?