MongoDB

  • Автор темы Автор темы starman
  • Дата начала Дата начала

starman

Client
Регистрация
18.04.2016
Сообщения
32
Реакции
8
Баллы
8
Подскажите, как подключиться из проекта к mongodb.
В списке подключения к БД отсутствует NoSQL
 
  • Спасибо
Реакции: Vital
Почитал: для подключение к MongoDB должен быть установлен драйвер, которые в свою очередь добавляет ряд библиотек: MongoDB.BSON.dll, MongoDB.Driver, MongoDB.Driver.Core и MongoDB.Driver.Legacy.
Можно это как-то реализовать? Просто появилась необходимость работать именно с такой базой данных.
 
Подозреваю что тут только самостоятельно на C#
Отправил ссылку на топик программисту модуля для работы с БД, не знаю точно
 
  • Спасибо
Реакции: Vital
Если использовать пространства имен
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Driver.GridFS;
using MongoDB.Driver.Linq;


то получаем ошибку в логе:
Отсутствуют пространства имен MongoDB
 
в GAC нужно либы сами добавить
 
Добавил библиотеки, добавил пространства имен, все равно выдает ту же ошибку.
 
Вот сам проект
 

Вложения

upload_2016-5-13_16-37-25.png
 
Он почему то считает, что они отсутствуют в пространстве имен, хотя указаны
 
и используйте везде var
C#:
Развернуть Свернуть Копировать
var client = new MonoClient();
 
Надо внимательно читать документацию на оф.сайте
Для .Net Framework 4, на котором работает ZP, доступны только библиотеки версии 1.11
вот ссылка на скачивание
соответственно смотрите по версиям бд доступным в библиотеке 1.11
 
  • Спасибо
Реакции: rostonix и Vital
ошибок больше нет, жаль, что документации по использованию драйвера крайне мало.
Получение данных из БД - как из shell сделать понятно, как сделать с использованием драйвера вообще непонятно.
Ни одного нормального примера так и не нашел.

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

Добавление новой записи:
Код:
Развернуть Свернуть Копировать
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.
 
Если кому то нужно будет в 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);    //Отправляем в базу данных
 
Подскажите где взять новую версию рабочий библиотеки с драйвером MongoDB.Driver, те что я нашёл в поиске в зенолабе, они очень древние 2016 года, а из новых версий не хочет работать в зенке, пишет что не является Net сборкой, хотя скачивал как раз под под Net.
 
Подскажите где взять новую версию рабочий библиотеки с драйвером 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 при запуске проекта вылетает ошибка несоответствия, но нужные мне вещи работают
 
Благодарю за ответ) С библиотеками уже разобрался, преобразовал пакет 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 и вряд ли оно будет работать нормально.
 
Благодарю за ответ) С библиотеками уже разобрался, преобразовал пакет 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 и вряд ли оно будет работать нормально.
А как преобразовать библиотеку под нужный фреймворк ? )

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

Вложения

Последнее редактирование:
  • Спасибо
Реакции: djaga
У меня когда-то все завелось при таком подключении:
C#:
Развернуть Свернуть Копировать
var client = new MongoClient("mongodb://user:password@host:port/?uuidRepresentation=Standard");
MongoServer server = client.GetServer();
var database = server.GetDatabase("test");
 
  • Спасибо
Реакции: RazDvaTri
Благодарю!) Мне бы если бы подсказали, как там вообще прописать, что бы ошибки в коде можно выводить, неправильный логин или пароль при подключении и другие ошибки, а то не ясно оно подключилось или нет. Я делал через 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
Понял, благодарю всех за ответ, буду разбираться дальше)
 
Благодарю!) Мне бы если бы подсказали, как там вообще прописать, что бы ошибки в коде можно выводить, неправильный логин или пароль при подключении и другие ошибки, а то не ясно оно подключилось или нет. Я делал через 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 Релиз, что бы можно было записывать в нее данные?
 

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