Показать сообщение отдельно
Старый 27.10.2015, 11:27   #25
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Чат: PHP + MySQLi или что то другое?

Сообщение от moka Посмотреть сообщение
Обновить стейт друга 64 у пользователя 32:
db.users.update({
    
_id32
}, {
    
$set: {
        
'friends.64.state'0
    
}
}); 
Удалить друга:
db.users.update({
    
_id32
}, {
    
$unset: {
        
'friends.64'1
    
},
    
$pull: {
        
'friend_ids'64
    
}
}); 
Как это сделать в БД я понял, а как мне в скрипте обратиться к тому же другу 64, если я знаю только переменную содержащую это значение? Ну то есть, я руками вставил друга 64, а дальше?

friend = 64; //64 нам пришло из POST запроса.

db.collection('users', function(err, collection){
	collection.find({_id:owner}).toArray(function(err, results){
		if (results[0].friends.friend) {
			...
		}
	});
});
results[0].friends.friend естественно не может найти поля friend.
А обратиться так надо кровь из носу.



И вставлять как? Вставка в массив происходила до безобразия просто $push-ем:
collection.update({_id:owner}, {$push:{friends:{_id:friend, group_id:0,state:1,add_date:addDate}}});
Как же быть с объектом?

И ещё - тип "объект" в данном случае будет эквивалентен типу "документ"?

АПД с созданием объекта я протупил что то. Объект в js этож как ассоциативный массив:
friends[64] = {...}
Надо иногда отдыхать...

Остался вопрос грамотной вставки нового друга в базу. И вопрос доступа. Я же владею только переменной id-друга которая пришла в запросе, надо как то собрать в этом вот куске
collection.update({_id:owner}, {$set:{'friends.64.state':0}});
строку 'friends.64.state' имея переменную friend = 64. Пока что не пойму как.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a

Последний раз редактировалось St_AnGer, 27.10.2015 в 16:01.
(Offline)
 
Ответить с цитированием