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

yopp
06.03.2018
14:47:34
На всякий случай, не забывайте что оплог не вечный. 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

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
и если вам не потребуется самостоятельно создават ьподобные записи у себя в системе, а только синкать их из другой

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
может мне кто-то подсказать, а то я новичек в монге

Nick
07.03.2018
14:34:45
Проблема в том что юзер_id должен быть того же типа что и _id
Всем привет.у меня есть проблема. Есть база,есть 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: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


Mykola
08.03.2018
01:56:55
Всем привет.у меня есть проблема. Есть база,есть 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');
}); почему я не видеть с данных базы.
А какие параметры ты в find() передаешь посмотри !


Nick
08.03.2018
09:42:53
короч кондишн не обязателен
хотя наверн там модель, но сут ьта же
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
Всем привет. Сколько весит монго джс если я попытаюсь ее в браузер вставить?

Nick
08.03.2018
10:08:59
линку в студию

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
Оно просто не встраиваемое