@MongoDBRussian

Страница 200 из 342
Alexander
06.03.2018
14:12:52
Всем привет, у меня вопрос по поводу change streaming. Я понимаю что он возвращает данные из oplog, но есть какая-либо возможность указывать смещение ? Т.е. Я записал данные в БД, получил из cs "создана запись". Теперь я делаю рекконект и хочу заново получить данные о том что создана запись

Там есть такой параметр resume token, можно его как-то привязать к записи(Вычислить по определенной записи)

yopp
06.03.2018
14:47:34
Там есть такой параметр resume token, можно его как-то привязать к записи(Вычислить по определенной записи)
https://docs.mongodb.com/manual/reference/change-events/#change-stream-output _id Metadata related to the operation. Use this document as a resumeToken for the resumeAfter parameter when resuming a change stream.

На всякий случай, не забывайте что оплог не вечный. resumeAfter ограничен oplog window

Google
Alexander
06.03.2018
14:49:28
@yopp но oplog упирается в размер

да

yopp
06.03.2018
14:50:16
Волшебства не бывает. Если вам надо очереди с гарантией доставки, то вам лучше использовать другой инструмент

Alexander
06.03.2018
14:50:30
cap collections

которые сейчас и юзаю

yopp
06.03.2018
14:51:49
На мой взгляд монга для очередей не совсем подходящее решение. Change Stream скорее о том, как подписаться на изменения документа, например при совместной работе. Никаких гарантий монга не даёт. Это даже близко не AMQP или подобное

Alexander
06.03.2018
14:52:16
Нет

я не юзаю это как очередь

нужно смотреть что добавлено и изменено в базе в определенных коллекциях

например мне нужно получать историю за n время

cap collections делают это превосходно

@yopp спасибо, буду дальше сам разбираться, вы подали мне идею, что, возможно, стоит и юзать. cs с очередью

yopp
06.03.2018
14:57:40
В целом если вы можете гарантировать что ваше приложение восстановиться, даже если если оно выпало за оплог, то change stream для вас. Можно даже без change stream, а просто оплог читать.

Google
XENONIUM
07.03.2018
06:57:07
В монго есть оператор ИЛИ?

Не для условий, а для полей

Zloy Dobriy
07.03.2018
07:01:24
$or | $in

keystr0ke
07.03.2018
07:33:41
В монго есть оператор ИЛИ?
вы об этом? > db.test.find({'$or':[{'field':{'$eq':'value'}}, {'field':{'$eq':'value1'}}]}) { "_id" : ObjectId("5a9f9528be2c489192445182"), "field" : "value" } { "_id" : ObjectId("5a9f952bbe2c489192445183"), "field" : "value1" }

В монго есть оператор ИЛИ?
или так > db.test.find({'field':{'$in':['value', 'value1']}}) { "_id" : ObjectId("5a9f9528be2c489192445182"), "field" : "value" } { "_id" : ObjectId("5a9f952bbe2c489192445183"), "field" : "value1" }

XENONIUM
07.03.2018
07:38:40
Например, поле name $exists:True or = 123

keystr0ke
07.03.2018
07:39:14
да, взгляните на первый мой ответ, просто измените операторы

XENONIUM
07.03.2018
07:39:21
name:{or:[{$exists:True},{$eq:123}]}

keystr0ke
07.03.2018
07:41:24
ну что-то типа такого, да. Только не совсем понятно, зачем $eq 123, по первому условию всё равно все документы сматчит, которые это поле имеют

XENONIUM
07.03.2018
07:42:37
Ой, там False должно быть

keystr0ke
07.03.2018
07:43:07
тогда да, все верно

{`$or:[{‘name’:{‘$exists’:false}}, {‘name’:’123’}]`

Dmitriy
07.03.2018
07:44:53
Зачем так?
А. Понятно. Сорри

Ilya
07.03.2018
10:30:03
Всем добрый день. Подскажите пожалуйста если вместо ObjectId я решил использовать cтроковое представление uuid для "_id" - помешает это както при репликации ?

Nick
07.03.2018
10:32:27
никак

единственно наверное индекс будет пожирнее по _id, а так никаких проблем

Ilya
07.03.2018
10:36:44
то есть то что в objectid содержится информация по машине на которой запущен данный инстанс никак не играет роль в репликации)

yopp
07.03.2018
10:37:28
то есть то что в objectid содержится информация по машине на которой запущен данный инстанс никак не играет роль в репликации)
на _id есть всего два ограничения: размер в BSON не более 1024 байта и уникальность в пределах одной коллекци

Ilya
07.03.2018
10:37:55
ну тогда вроде все ок

Google
Ilya
07.03.2018
10:37:57
спасибо

yopp
07.03.2018
10:39:00
Но я спрошу на всякий случай: а зачем?

Ilya
07.03.2018
10:45:34
про uuid?

надо данные из другой БД перетащить там uuid - вот и думаю есть ли смысл его использовать

если есть минусы данного решения то готов их услышать)

yopp
07.03.2018
11:09:53
objectid и uuidv4 оба являются псевдослучайными идентификаторами. разница только в размере. ObjectId — 12 байт, UUIDv4 — 16 байт binary или 36 байт string

у UUID больше энтропия, 122 байта

у objectid энтропия 96 байт и там известен алгоритм генерации «псевдослучайных» чисел. в итоге энтропия нужна исключительно для расчёта коллизий

Ilya
07.03.2018
11:14:43
ну это понятно, прото у меня два варианта или в документе будет только uuid или будут оба. потому что отказаться от uuid не могу т.к. этот сервис уже используется

Nick
07.03.2018
11:23:22
ну это понятно, прото у меня два варианта или в документе будет только uuid или будут оба. потому что отказаться от uuid не могу т.к. этот сервис уже используется
просто определитесь допустимо ли дублирвоание uuid-ов для разных записей, если нет, то можно использоват ьвместо ид

и если вам не потребуется самостоятельно создават ьподобные записи у себя в системе, а только синкать их из другой

Ilya
07.03.2018
11:36:50
В общем я все понял)

Aleksandr
07.03.2018
14:25:58
всем привет, небольшой вопрос про aggregation

есть вот такой объект conversation



который в себе содержит user id

вот юзеры



почему в этом случаее мне возвращаються все юзеры а не один?



Google
Aleksandr
07.03.2018
14:27:43
если foreignField сменить с id на _id то вообще ничего нету



©Аброр
07.03.2018
14:27:47
Всем привет.у меня есть проблема. Есть база,есть collection var express = require('express'); var bodyParser = require('body-parser'); var app = express(); var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/company'); var Company = mongoose.model('Company',mongoose.Schema({ name: String, dept: String, area: String, status: String, contact: String, salary: String })); app.use(bodyParser.urlencoded({extended : true})); app.use(bodyParser.json()); app.get('/api/list',function (req,res) { Company.find(function(err,list){ if(err) res.send(err); res.json(list); console.log('working..'); }); }); app.listen(3000,function(){ console.log('Server is Running on port 3000'); }); почему я не видеть с данных базы.

Aleksandr
07.03.2018
14:28:00
может мне кто-то подсказать, а то я новичек в монге

Aleksandr
07.03.2018
14:47:29


Nick
07.03.2018
14:49:09
а вы вкурсе что в конверсашнах нет поля user_id

а есть users_id

localField в лукапе нормально пропишите

Aleksandr
07.03.2018
14:50:36
блин

спасибо вам большое

Nick
07.03.2018
14:51:03
и набор user_id обычно называют user_ids а не users_id

Aleksandr
07.03.2018
14:51:57
спасибо болшьшое

Serge
08.03.2018
01:03:46
Приоткрываем завесу тайны и рассказываем, что "38 попугаев" — это подкаст не только про Python. Первый выпуск в прямом эфире уже 12 марта. Подробности и анонс тут https://spbpython.guru/38-parrots/0001-denis-kalanov

Nick
08.03.2018
09:42:53
А какие параметры ты в find() передаешь посмотри !
если открыть как определн find в query в монгусе: Query.prototype.find = function(conditions, callback) { if (typeof conditions === 'function') { callback = conditions; conditions = {}; }

короч кондишн не обязателен

хотя наверн там модель, но сут ьта же Model.find = function find(conditions, projection, options, callback) { if (typeof conditions === 'function') { callback = conditions; conditions = {}; projection = null; options = null; } else if (typeof projection === 'function') { callback = projection; projection = null; options = null; } else if (typeof options === 'function') { callback = options; options = null; }

Google
Defragmented
08.03.2018
09:55:26
Всем привет. Сколько весит монго джс если я попытаюсь ее в браузер вставить?

Defragmented
08.03.2018
10:10:54
Пакет для nodejs если его упаковать например browserify, сейчас поищу

А, пардон, монго требует отдельной программы?

Nick
08.03.2018
10:15:55
Конечно

Точнее монгодб это отдельно запущенное приложение

Defragmented
08.03.2018
10:18:33
Понял, спасибо (надо какое-то слово определить для дб которые требуют отдельного приложения и которые работают просто как библиотека)

Nick
08.03.2018
10:20:07
Embedded

Defragmented
08.03.2018
10:21:53
и монго не embedded(встроенная) потому что отдельное приложение, правильно понял?

Nick
08.03.2018
10:23:19
Оно просто не встраиваемое

Страница 200 из 342