MongoDB

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Подскажите, как подключиться из проекта к mongodb.
В списке подключения к БД отсутствует NoSQL
 
  • Спасибо
Реакции: Vital

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Почитал: для подключение к MongoDB должен быть установлен драйвер, которые в свою очередь добавляет ряд библиотек: MongoDB.BSON.dll, MongoDB.Driver, MongoDB.Driver.Core и MongoDB.Driver.Legacy.
Можно это как-то реализовать? Просто появилась необходимость работать именно с такой базой данных.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Подозреваю что тут только самостоятельно на C#
Отправил ссылку на топик программисту модуля для работы с БД, не знаю точно
 
  • Спасибо
Реакции: Vital

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Если использовать пространства имен
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;


то получаем ошибку в логе:
Отсутствуют пространства имен MongoDB
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
в GAC нужно либы сами добавить
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Добавил библиотеки, добавил пространства имен, все равно выдает ту же ошибку.
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Вот сам проект
 

Вложения

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Он почему то считает, что они отсутствуют в пространстве имен, хотя указаны
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
и используйте везде var
C#:
var client = new MonoClient();
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
Надо внимательно читать документацию на оф.сайте
Для .Net Framework 4, на котором работает ZP, доступны только библиотеки версии 1.11
вот ссылка на скачивание
соответственно смотрите по версиям бд доступным в библиотеке 1.11
 
  • Спасибо
Реакции: rostonix и Vital

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
ошибок больше нет, жаль, что документации по использованию драйвера крайне мало.
Получение данных из БД - как из shell сделать понятно, как сделать с использованием драйвера вообще непонятно.
Ни одного нормального примера так и не нашел.

Может у вас есть какой-нибудь источник информации, где можно почерпнуть знания по использованию.
В основном интересует как сделать запрос добавления и обновления записи в коллекции.
 
  • Спасибо
Реакции: RazDvaTri

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Главное то, что я даже не понимаю произошел коннект или нет.
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Разобрался как добавлять и редактировать записи.

Добавление новой записи:
Код:
string connectionString = "mongodb://localhost:3001/meteor"; // указываете адрес и порт, на котором крутится MongoDB, можно посмотреть при запуске БД командой meteor mongo из консоли.
var client = new MongoClient(connectionString); // Подключаемся к MongoDB
var database = client.GetDatabase("meteor"); // Получаем нужную БД
var collection = database.GetCollection<BsonDocument>("posts"); // Получаем нужную коллекцию


var document = new BsonDocument  // создаем новый документ в формате BSON
{
    { "url", project.Variables["url"].Value },  // перечисляем добавляемые поля в виде ключ-значение(в данном примере используется в качестве значения значение переменной в проекте
    { "title", project.Variables["title"].Value },
    { "min_claim", project.Variables["min_claim"].Value },
    { "max_claim", project.Variables["max_claim"].Value },
    { "timer", project.Variables["timer"].Value },
    { "balance", project.Variables["balance"].Value },
    { "author", "starman" }
};


collection.InsertOneAsync(document); //Команда добавления записи
Редактирование записи:
Код:
string connectionString = "mongodb://localhost:3001/meteor";
var client = new MongoClient(connectionString);
var database = client.GetDatabase("meteor");
var collection = database.GetCollection<BsonDocument>("posts");

var filter = Builders<BsonDocument>.Filter.Eq("title", project.Variables["title"].Value); //Используем фильтр для отбора нужного документа
var update = Builders<BsonDocument>.Update
.Set("min_claim", "40")
.Set("max_claim", "5000"); // Указываем обновляемые поля и новые значения(здесь также можно использовать значения переменных из проекта)
var result = collection.UpdateOneAsync(filter, update);// Команда обновления записи

Сайт, на котором все данные отображаются создан с помощью Meteor.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Если кому то нужно будет в Mongo отправлять строку Json, то это делается следующим кодом


C#:
string connectionString = "mongodb://localhost:3001/meteor"; // указываете адрес и порт, на котором крутится MongoDB, можно посмотреть при запуске БД командой meteor mongo из консоли.
var client = new MongoClient(connectionString); // Подключаемся к MongoDB
var database = client.GetDatabase("meteor"); // Получаем нужную БД
var collection = database.GetCollection<BsonDocument>("posts"); // Получаем нужную коллекцию

string text = project.Variables["Json"].Value;   // получаем переменную из проекта
var document = BsonSerializer.Deserialize<BsonDocument>(text);   // Приводим документ к нужному, для отправки, формату

collection.InsertOneAsync(document);    //Отправляем в базу данных
 

RazDvaTri

Client
Регистрация
16.11.2020
Сообщения
8
Благодарностей
1
Баллы
3
Подскажите где взять новую версию рабочий библиотеки с драйвером MongoDB.Driver, те что я нашёл в поиске в зенолабе, они очень древние 2016 года, а из новых версий не хочет работать в зенке, пишет что не является Net сборкой, хотя скачивал как раз под под Net.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Подскажите где взять новую версию рабочий библиотеки с драйвером MongoDB.Driver, те что я нашёл в поиске в зенолабе, они очень древние 2016 года, а из новых версий не хочет работать в зенке, пишет что не является Net сборкой, хотя скачивал как раз под под Net.
с монго вообще головняки )) последние сборки работают на .net на которой не работает сама зенка и по итогу я использовал mongo driver толи версией 1.0, толи 2.0. При этом 2.0 вроде как не подрубается через PM и я подрубал 1.0, а в самой папке ...ZennoLab\RU\ZennoPoster Pro V7\7.7.0.0\Progs\ExternalAssemblies менял на 2.0. В PM при запуске проекта вылетает ошибка несоответствия, но нужные мне вещи работают
 

RazDvaTri

Client
Регистрация
16.11.2020
Сообщения
8
Благодарностей
1
Баллы
3
Благодарю за ответ) С библиотеками уже разобрался, преобразовал пакет nuget под нужный фреймворк 4.62 и вроде бы визуально всё заработало, ошибок нет, библиотеки подключились, использовал v2.17. Но возникли не понятки с авторизацией в бд. Вот код который я использую для авторизации:
C#:
var client = new MongoClient("mongodb+srv://login:Password@host/test?w=majority");
var database = client.GetDatabase("test");
При этом какой логин или пароль я не пишу, без разницы, ошибок авторизации нет, всё типа ок, но если указать ошибочный хост то появляется ошибка подключения. Может есть какой то способ как вылавливать ошибки, может они там есть скрытые? Уже сутки разбираюсь с этой проблемой, и не могу ничего понять. Ставить как у вас старую версию библиотеки, но я работаю в облаке а там монго v5.09 и вряд ли оно будет работать нормально.
 

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Благодарю за ответ) С библиотеками уже разобрался, преобразовал пакет nuget под нужный фреймворк 4.62 и вроде бы визуально всё заработало, ошибок нет, библиотеки подключились, использовал v2.17. Но возникли не понятки с авторизацией в бд. Вот код который я использую для авторизации:
C#:
var client = new MongoClient("mongodb+srv://login:Password@host/test?w=majority");
var database = client.GetDatabase("test");
При этом какой логин или пароль я не пишу, без разницы, ошибок авторизации нет, всё типа ок, но если указать ошибочный хост то появляется ошибка подключения. Может есть какой то способ как вылавливать ошибки, может они там есть скрытые? Уже сутки разбираюсь с этой проблемой, и не могу ничего понять. Ставить как у вас старую версию библиотеки, но я работаю в облаке а там монго v5.09 и вряд ли оно будет работать нормально.
А как преобразовать библиотеку под нужный фреймворк ? )

Строку подключения свою скину немного позже
 

RazDvaTri

Client
Регистрация
16.11.2020
Сообщения
8
Благодарностей
1
Баллы
3
Благодарю!) Мне бы если бы подсказали, как там вообще прописать, что бы ошибки в коде можно выводить, неправильный логин или пароль при подключении и другие ошибки, а то не ясно оно подключилось или нет. Я делал через Visual Studio 2022, по инструкции вот от сюда ТЫК не знаю насчёт более старых версий Visual Studio но я на всякий случай сделал всё как там, потом просто указал при создании нужный фреймворк 4.62 и подкинул пакет от сюда ТЫК закинул всё что там нужно было из перечня пакетов и сохранил. В инструкции всё более подробно расписано. От себя хочу добавить что мне пришлось ещё менять библиотеку в зенке на более новую версию по адресу:
C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\ваша версия\Progs
файл netstandard.dll из папки где всё скомпилилось и подключать её ещё и в GAC иначе были ошибки.
Ниже прикрепил архив уже с готовыми библиотеками 2.17 если кому то лень будет разбираться и ставить Visual Studio.
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: djaga

daVinchi

Client
Регистрация
11.01.2019
Сообщения
59
Благодарностей
67
Баллы
18
У меня когда-то все завелось при таком подключении:
C#:
var client = new MongoClient("mongodb://user:password@host:port/?uuidRepresentation=Standard");
MongoServer server = client.GetServer();
var database = server.GetDatabase("test");
 
  • Спасибо
Реакции: RazDvaTri

Deisler

Client
Регистрация
26.10.2019
Сообщения
486
Благодарностей
190
Баллы
43
Благодарю!) Мне бы если бы подсказали, как там вообще прописать, что бы ошибки в коде можно выводить, неправильный логин или пароль при подключении и другие ошибки, а то не ясно оно подключилось или нет. Я делал через Visual Studio 2022, по инструкции вот от сюда ТЫК не знаю насчёт более старых версий Visual Studio но я на всякий случай сделал всё как там, потом просто указал при создании нужный фреймворк 4.62 и подкинул пакет от сюда ТЫК закинул всё что там нужно было из перечня пакетов и сохранил. В инструкции всё более подробно расписано. От себя хочу добавить что мне пришлось ещё менять библиотеку в зенке на более новую версию по адресу: файл netstandard.dll из папки где всё скомпилилось и подключать её ещё и в GAC иначе были ошибки.
Ниже прикрепил архив уже с готовыми библиотеками 2.17 если кому то лень будет разбираться и ставить Visual Studio.
моя строка подключения

C#:
string connectionString = "mongodb://Login:Pass@Ip:Port"; // указываете адрес и порт, на котором крутится MongoDB, можно посмотреть при запуске БД командой meteor mongo из консоли.
var client = new MongoClient(connectionString); // Подключаемся к MongoDB
var database = client.GetDatabase("Test_DB"); // Получаем нужную БД
var collection = database.GetCollection<BsonDocument>("Test_Collection"); // Получаем нужную коллекцию
Получить ошибку о том что подключение не прошло я не знаю как. Я не проверяю. Смотрю что в базе записи появляются и все норм
 
  • Спасибо
Реакции: RazDvaTri

RazDvaTri

Client
Регистрация
16.11.2020
Сообщения
8
Благодарностей
1
Баллы
3
Понял, благодарю всех за ответ, буду разбираться дальше)
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
Благодарю!) Мне бы если бы подсказали, как там вообще прописать, что бы ошибки в коде можно выводить, неправильный логин или пароль при подключении и другие ошибки, а то не ясно оно подключилось или нет. Я делал через Visual Studio 2022, по инструкции вот от сюда ТЫК не знаю насчёт более старых версий Visual Studio но я на всякий случай сделал всё как там, потом просто указал при создании нужный фреймворк 4.62 и подкинул пакет от сюда ТЫК закинул всё что там нужно было из перечня пакетов и сохранил. В инструкции всё более подробно расписано. От себя хочу добавить что мне пришлось ещё менять библиотеку в зенке на более новую версию по адресу: файл netstandard.dll из папки где всё скомпилилось и подключать её ещё и в GAC иначе были ошибки.
Ниже прикрепил архив уже с готовыми библиотеками 2.17 если кому то лень будет разбираться и ставить Visual Studio.
Помогите, пожалуйста, решить данную задачу.

1. Скачал dll ки из поста выше (MongoDB v2.17.zip)
2. Перенес все файлы кроме netstandart.dll в External:
95417
3. После неудач, заменил в Zenno 7.7.1 Релиз паке -
95418
на тот что был в архиве (MongoDB v2.17.zip)
4. Добавил все файлы в GAC
95419
5. В общий код и Using прописал все что добавил (кроме netstandart, так как его в общем коде не находило почему-то.)
95420
6. В namespace ZennoLab.OwnCode ничего не добавлял.
7. Создал С# кубик
8. Вставил туда по очереди для тестов примеры выше:
C#:
var client = new MongoClient("mongodb://user:password@host:port/?uuidRepresentation=Standard");
MongoServer server = client.GetServer();
var database = server.GetDatabase("test");
95421

Сразу же кубик оповещения выдает ошибку:
Компиляция кода Ошибка в действии "CS0246" "The type or namespace name 'MongoServer' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 2; Cтолбец: 1]
95422


На сколько понял я, не хватает библиотеки MongoServer, но к сожалению я не понимаю как ее корректно скачать с nuget, запаковать в dll, а потом залить в Extrenal и добавить в Using. Или что нужно прописать в общем коде, что бы решить данную задачу.
Если вставить снипет из комментов выше:
C#:
string connectionString = "mongodb://localhost:3001/meteor"; // указываете адрес и порт, на котором крутится MongoDB, можно посмотреть при запуске БД командой meteor mongo из консоли.
var client = new MongoClient(connectionString); // Подключаемся к MongoDB
var database = client.GetDatabase("meteor"); // Получаем нужную БД
var collection = database.GetCollection<BsonDocument>("posts"); // Получаем нужную коллекцию


var document = new BsonDocument  // создаем новый документ в формате BSON
{
    { "url", project.Variables["url"].Value },  // перечисляем добавляемые поля в виде ключ-значение(в данном примере используется в качестве значения значение переменной в проекте
    { "title", project.Variables["title"].Value },
    { "min_claim", project.Variables["min_claim"].Value },
    { "max_claim", project.Variables["max_claim"].Value },
    { "timer", project.Variables["timer"].Value },
    { "balance", project.Variables["balance"].Value },
    { "author", "starman" }
};


collection.InsertOneAsync(document); //Команда добавления записи
То получаем ошибку целого проекта:
Компиляция кода Ошибка в действии "CS0246" "The type or namespace name 'MongoClient' could not be found (are you missing a using directive or an assembly reference?)". [Строка: 2; Cтолбец: 18]
Т.е. теперь, не хватает библиотеки MongoClient, но к сожалению я не понимаю как ее корректно скачать с nuget, запаковать в dll, а потом залить в Extrenal и добавить в Using. Или что нужно прописать в общем коде, что бы решить данную задачу.

Подскажите, пожалуйста, как корректно настроить MognoDB на Zenno 7.7.1 Релиз, что бы можно было записывать в нее данные?
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)