Как прикрепить новый комментарий в нужное место?Видимо ссылкой на родительский коммент.
И как сосчитать все комментарии с учетом ответов?В каждом комменте храните ссылку на пост/статью, таким образом все комментарии поста можно будет вынимать одним запросом, а при добавлении комментария инкрементируйте "числоКомментов" в документе поста, этим вы будите иметь кол-во комментов поста без выкачивания этих самых комментов.
Т.е. на вход подается N товаров
брать id последнего документа и делать find()
> db.qtest.insert({
date: Date("2013-01-14"),
name: "Roma",
tags:['python', 'ruby', 'c'],
counts: {python: 14, ruby:10, c:4 }
})
> db.qtest.find({tags: 'python'}, {date: 1, name:1, 'counts.python':1}).pretty()
{
"_id" : ObjectId("55a28f4624db1e49cecbc89f"),
"date" : "Sun Jul 12 2015 21:01:10 GMT+0500 (YEKT)",
"name" : "Roma",
"counts" : {
"python" : 14
}
}
db.qtest.ensureIndex({tags: 1})
, и этот запрос будет работать быстро когда коллекция будет большая. Есть ли смысл в инкрементируемых ИД для всех таблиц в mongodb?
$ mongod --auth --dbpath /tmp/1 --smallfiles --port 27020
$ mongo --port 27020
MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27020/test
> show dbs
admin (empty)
local 0.031GB
> use admin
switched to db admin
> db.addUser({user:'name', pwd:'password', roles:["userAdminAnyDatabase","dbAdminAnyDatabase", "readWriteAnyDatabase"]})
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: {
"user" : "name",
"roles" : [
"userAdminAnyDatabase",
"dbAdminAnyDatabase",
"readWriteAnyDatabase"
]
}
> exit
bye
$ mongo --port 27020
MongoDB shell version: 2.6.10
connecting to: 127.0.0.1:27020/test
> show dbs
2015-05-27T16:35:46.071+0500 listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} at src/mongo/shell/mongo.js:47
> use admin
switched to db admin
> db.auth('name', 'password')
1
> show dbs
admin 0.031GB
local 0.031GB
{
data1: {key1: value1, key2: value2},
data2: {key2: value2, key2: value2}
}