我正在使用 Dynamo.DB 并关注 Node.JS 的“ https://www.npmjs.org/package/dynamodb ”;我想知道如何将属性设为“必需”?
这里有一个我在文档中找到的示例,但我不确定我们是否可以在 Dynamo.DB 中拥有“required”属性?
// flat [string, number, string array or number array] based json object
var item = { score: 304,
date: (new Date).getTime(),
sha: '3d2d6963',
usr: 'spolu',
lng: ['node', 'c++'] };
ddb.putItem('a-table', item, {}, function(err, res, cap) {});
Run Code Online (Sandbox Code Playgroud) 使用以下数据,我将如何使用 MongoDB 对聚合查询的支持来计算对 pollId 为“hr4946-113”的记录集合的赞成票和反对票总数。
{ "_id" : ObjectId("54abcdbeba070410146d6073"), "userId" : "1234", "pollId" : "hr4946-113", "vote" : true, "__v" : 0 }
{ "_id" : ObjectId("54afe32fec4444481b985711"), "userId" : "12345", "pollId" : "hr2840-113", "vote" : true, "__v" : 0 }
{ "_id" : ObjectId("54b66de68dde7a0c19be987b"), "userId" : "123456", "pollId" : "hr4946-113", "vote" : false }
Run Code Online (Sandbox Code Playgroud)
这将是预期的结果。
{
"yesCount": 1,
"noCount":1
}
Run Code Online (Sandbox Code Playgroud) 我有一张这样的表:
CREATE TABLE peoples(
user_id int,
people_id text,
email text,
PRIMARY KEY ((user_id), people_id)
);
Run Code Online (Sandbox Code Playgroud)
当我需要导入新人来检查大量人而不是分别检查每一行时,这是一种很好的做法吗?
像这样的东西:
SELECT * FROM peoples WHERE user_id = 1 and people_id IN ('7651-ABCD', '9874-UHAG');
Run Code Online (Sandbox Code Playgroud)
从服务器端,我会检查它是否存在,而不是像这样查询每个人:
SELECT * FROM peoples WHERE user_id = 1 and people_id = '7651-ABCD';
Run Code Online (Sandbox Code Playgroud)
我需要导入大约 30-50 万人,并且必须知道用户是否存在这些人,我必须先读后写。
IN有什么限制吗?IN 的良好做法有多少?
我使用的是二进制协议,所以我更喜欢每次使用 IN 进行选择请求。
谢谢!
我知道已经有类似问题的答案,但我认为答案不够强,所以我会问我自己的具体问题。
假设:动态表单构建器,用户可以创建具有未知结构的表单。
解决方案:表单提交,数据会存储在2个表结构中:
我对这个解决方案的问题是大量使用:
假设我有 100 万用户,
每个用户将有 3 个表单,
每个表单将有 10 个字段
,每个表单每天有 5 个提交。
因此 FormSubmissionHeader 将每天增长 100 万 X3X5 = 每天 1500 万行。
和 FormSubmissionFieldsData 将增长 15X10(每日提交数,字段数的两倍),即每天 1.5 亿行。
所以基于这个解决方案:
我不知道它会如何运作。
我看到两种选择:
使用 MONGODB 存储提交的标题和数据(无 SQL)
为每个表单动态创建表,并将数据直接存储在每个字段的相关数据类型中。
这是我看到的类似问题..
我想知道你们对此有何看法,或者您能提出其他建议吗?
我有一个包含多个文档的集合,这些文档遵循以下结构:
{
"_id" : {
"oid" : XXX
},
"name" : "Name",
"videos" [
{
"id" : 1,
"thumbnail" : "thumbnail.jpg",
"name" : "Name here"
},
{
"id" : 2,
"thumbnail" : "thumbnail.jpg",
"name" : "Name here"
},
{
"id" : 3,
"thumbnail" : "thumbnail.jpg",
"name" : "Name here"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想查找并更新视频的缩略图,我只知道其中的 id,但不知道它在哪个文档中。
这是我迄今为止尝试过的方法,但它无法正常工作。我发现的所有示例都依赖于知道文档 ID 和要更新的对象的数组位置。我还发现做这样的查询发现文档没问题,但将整个文档设置为新缩略图!
db.collection(COLLECTION-NAME, function(err, collection){
collection.update(
{ 'videos.id' : 2 },
{ $set: { thumbnail: "newThumbnail.jpg" } },
function(err, result){
if (!err){
console.log('saved', result)
} …Run Code Online (Sandbox Code Playgroud) 假设这是我的用户集合中的一项:
{
"_id" : "5545f4c4d0dd52c355a99fbe",
"name" : "Dollie James",
"device" : "iOS",
"gender" : "Female",
"wallet" : [
{
"store" : "All Saints",
"balance" : "$196.11",
"date" : "2014-02-22T22:09:38 -10:00",
"tags" : [
"Tshirt",
"Summer"
]
},
{
"store" : "Nike",
"balance" : "$367.76",
"date" : "2014-04-18T14:44:30 -10:00",
"tags" : [
"Shoes"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
此记录是从以下查询返回的:
db.users.findOne({$and:[{"wallet.tags" : "Tshirt"}, {"wallet.store":"Nike"}]})
然而,这不是我想要的结果,因为 Tshirt 和 Nike 不在钱包数组中的同一个对象中。看来 mongo 正在对整个数组进行查询。如何定位此查询以仅返回数组中同一对象中的两个条件?
有人知道在 Mongo3.2 中更新上限集合的方法吗?我在 2.x 中进行了这项工作,在那里我更新了一个集合,并且基本上删除了它的所有内容,所以我知道它已经被处理了。这样就会过时了。
当我在 3.2 中做同样的事情时,我在命令行上收到以下错误。
无法更改上限集合中文档的大小:318 != 40
在这里您可以看到我将文档从 318 字节缩小到 40 字节。
有没有办法做到这一点?
我在 mongodb 上收到此警告,
WARNING: Readahead for /data is set to 1024KB
We suggest setting it to 256KB (512 sectors) or less
http://dochub.mongodb.org/core/readahead
Run Code Online (Sandbox Code Playgroud)
查询时,每个链接都建议将预读值设置为较少的数字以及如何设置?
我知道将它设置为较小的值会让我摆脱警告,但我对预读代表什么更感兴趣?如果我将其设置为更高的值会产生什么影响?
我想使用匹配某种模式的行从 HBase shell 扫描 HTable 中的行。
例如,我有以下表格数据:
row:r1_t1 column:cf:a, timestamp=1461911995948,value=v1
row:r2_t2 column:cf:a, timestamp=1461911995949,value=v2
row:s1_t1 column:cf:a, timestamp=1461911995950,value=q1
row:s2_t2 column:cf:a, timestamp=1461911995951,value=q2
Run Code Online (Sandbox Code Playgroud)
根据上述数据,我想找到包含 't1' 的行:
row:r1_t1 column:cf:a, timestamp=1461911995948,value=v1
row:s1_t1 column:cf:a, timestamp=1461911995950,value=q1
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用 PrefixFilter 扫描表,但此方法采用以指定过滤器开头的行。
scan 'test', {FILTER => "(PrefixFilter('s')"}
Run Code Online (Sandbox Code Playgroud)
是否有类似的基于过滤行名称中间模式匹配的行来扫描表的方法?
我正在构建一个社交应用程序,我有一个关于 firebase 的数据库,其结构如下:
tJWRbfqUUbSQn5eI8ZS5vPG9znr1
bio:
coverPhotoUrl:
email:
firstname:
imgUrl:
lastname:
name:
phone:
posts
-KPN0b7QmNp8AjYy4yFl
-KPXmtvZdiQ--QjZ-j3m
-KPc7PpDkmFNU9JjlIJP
-KPc7PptOulQdrpsrGEp
-KPc7Pq6JC7bjt8-sRFU
-KPc7PqJ2651EIQWXIv6
Run Code Online (Sandbox Code Playgroud)
顶级键是用户 ID,所以我对每个用户都有这个,每个用户也有帖子,在帖子节点内,我有评论,以与帖子完全相同的方式推送。我的问题是,我有点好奇我将如何为新闻源建模,现在对我而言,新闻源是您和您关注的每个人的帖子列表,按照发布时间的确切顺序排列时间线也只是所述用户按该顺序发布的帖子。
我通过迭代用户的帖子来正确地完成了时间线 我尝试以两种方式做新闻源部分,这有错误,我认为效率不高
由于每个用户都在他自己的节点中维护了一个他的关注者列表,我这样做是为了让用户在任何时候发帖时,他不仅会在自己的“帖子节点”中写道,还会在他的“新闻源”节点之后的每个其他人中写道
这种方法的缺点 如果取消关注,我无法从用户 B 的时间轴 b 中删除用户 A 的帖子。我让每个用户都可以在每个其他人的节点中进行写入,正如我所读到的,这不是一个很好的做法。
在用户 B 的 Timeline 节点中维护用户 A 的 post 节点的 url,这样就可以解决方法 1 的 con B。
这种方法的缺点 我不知道如何实现它。
我不知道是否有任何教科书式的方法来做到这一点(当然必须有,那里只有这么多社交网络平台),如果有我想知道,如果你能指点我如何(不是帮助我)实现我的方法 2,我将非常感激。
另外,我正在关注 这个类似的问题
这并没有完全回答我的问题,但看起来是一个非常有趣的方法