yopp
На всякий случай, не забывайте что оплог не вечный. resumeAfter ограничен oplog window
Aleksandr
@yopp но oplog упирается в размер
Aleksandr
да
yopp
Волшебства не бывает. Если вам надо очереди с гарантией доставки, то вам лучше использовать другой инструмент
Aleksandr
cap collections
Aleksandr
которые сейчас и юзаю
yopp
На мой взгляд монга для очередей не совсем подходящее решение. Change Stream скорее о том, как подписаться на изменения документа, например при совместной работе.
Никаких гарантий монга не даёт. Это даже близко не AMQP или подобное
Aleksandr
Нет
Aleksandr
я не юзаю это как очередь
Aleksandr
нужно смотреть что добавлено и изменено в базе в определенных коллекциях
Aleksandr
например мне нужно получать историю за n время
Aleksandr
cap collections делают это превосходно
Aleksandr
@yopp спасибо, буду дальше сам разбираться, вы подали мне идею, что, возможно, стоит и юзать. cs с очередью
yopp
В целом если вы можете гарантировать что ваше приложение восстановиться, даже если если оно выпало за оплог, то change stream для вас. Можно даже без change stream, а просто оплог читать.
️lefrotite
В монго есть оператор ИЛИ?
️lefrotite
Не для условий, а для полей
Zloy-Dobry
$or | $in
Nickolay
В монго есть оператор ИЛИ?
вы об этом?
> db.test.find({'$or':[{'field':{'$eq':'value'}}, {'field':{'$eq':'value1'}}]})
{ "_id" : ObjectId("5a9f9528be2c489192445182"), "field" : "value" }
{ "_id" : ObjectId("5a9f952bbe2c489192445183"), "field" : "value1" }
Nickolay
В монго есть оператор ИЛИ?
или так
> db.test.find({'field':{'$in':['value', 'value1']}})
{ "_id" : ObjectId("5a9f9528be2c489192445182"), "field" : "value" }
{ "_id" : ObjectId("5a9f952bbe2c489192445183"), "field" : "value1" }
️lefrotite
Например, поле name $exists:True or = 123
Nickolay
да, взгляните на первый мой ответ, просто измените операторы
️lefrotite
name:{or:[{$exists:True},{$eq:123}]}
Nickolay
ну что-то типа такого, да. Только не совсем понятно, зачем $eq 123, по первому условию всё равно все документы сматчит, которые это поле имеют
️lefrotite
Ой, там False должно быть
Nickolay
тогда да, все верно
Nickolay
{`$or:[{‘name’:{‘$exists’:false}}, {‘name’:’123’}]`
Мечтатель
Ilya
Всем добрый день. Подскажите пожалуйста если вместо ObjectId я решил использовать cтроковое представление uuid для "_id" - помешает это както при репликации ?
Nick
никак
Nick
единственно наверное индекс будет пожирнее по _id, а так никаких проблем
Ilya
то есть то что в objectid содержится информация по машине на которой запущен данный инстанс никак не играет роль в репликации)
yopp
Ilya
ну тогда вроде все ок
Ilya
спасибо
yopp
Но я спрошу на всякий случай: а зачем?
Ilya
про uuid?
Ilya
надо данные из другой БД перетащить там uuid - вот и думаю есть ли смысл его использовать
Ilya
если есть минусы данного решения то готов их услышать)
yopp
objectid и uuidv4 оба являются псевдослучайными идентификаторами. разница только в размере. ObjectId — 12 байт, UUIDv4 — 16 байт binary или 36 байт string
yopp
у UUID больше энтропия, 122 байта
yopp
у objectid энтропия 96 байт и там известен алгоритм генерации «псевдослучайных» чисел.
в итоге энтропия нужна исключительно для расчёта коллизий
Ilya
ну это понятно, прото у меня два варианта или в документе будет только uuid или будут оба. потому что отказаться от uuid не могу т.к. этот сервис уже используется
Nick
Nick
и если вам не потребуется самостоятельно создават ьподобные записи у себя в системе, а только синкать их из другой
Ilya
В общем я все понял)
Aleksandr
всем привет, небольшой вопрос про aggregation
Aleksandr
есть вот такой объект conversation
Aleksandr
Aleksandr
который в себе содержит user id
Aleksandr
вот юзеры
Aleksandr
Aleksandr
почему в этом случаее мне возвращаються все юзеры а не один?
Aleksandr
Aleksandr
если foreignField сменить с id на _id то вообще ничего нету
Aleksandr
Anonymous
Всем привет.у меня есть проблема. Есть база,есть 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
может мне кто-то подсказать, а то я новичек в монге
Nick
Проблема в том что юзер_id должен быть того же типа что и _id
Nick
Всем привет.у меня есть проблема. Есть база,есть 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
Aleksandr
Nick
а вы вкурсе что в конверсашнах нет поля user_id
Nick
а есть users_id
Nick
localField в лукапе нормально пропишите
Aleksandr
блин
Aleksandr
спасибо вам большое
Nick
и набор user_id обычно называют user_ids а не users_id
Aleksandr
спасибо болшьшое
Mykola
Всем привет.у меня есть проблема. Есть база,есть 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
А какие параметры ты в find() передаешь посмотри !
если открыть как определн find в query в монгусе:
Query.prototype.find = function(conditions, callback) {
if (typeof conditions === 'function') {
callback = conditions;
conditions = {};
}
Nick
короч кондишн не обязателен
Nick
хотя наверн там модель, но сут ьта же
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;
}
Defragmented
Всем привет. Сколько весит монго джс если я попытаюсь ее в браузер вставить?
Nick
Nick
линку в студию
Defragmented
Пакет для nodejs если его упаковать например browserify, сейчас поищу
Defragmented
А, пардон, монго требует отдельной программы?
Nick
Конечно