是否可以选择MongoDB在mongorc.js中启动时应使用的数据库?
use dbname
Run Code Online (Sandbox Code Playgroud)
没有运作.这是一个非JavaScript宏.
我的"用户"集合带有"关注列表"字段,其中也有许多内部字段,其中一个是"arrangeable_values"("关注列表"中的第二个字段).
我需要在"用户"集合中找到每个用户,在"关注列表"中找到每个"arrangeable_values".
我怎么能用mongodb shell做到这一点?
以下是数据模型的示例:
> db.users.findOne({'nickname': 'superj'})
{
"_id" : ObjectId("4f6c42f6018a590001000001"),
"nickname" : "superj",
"provider" : "github",
"user_hash" : null,
"watchlists" : [
{
"_id" : ObjectId("4f6c42f7018a590001000002"),
"arrangeable_values" : {
"description" : "My introduction presentation to node.js along with sample code at various stages of building a simple RESTful web service with journey, cradle, winston, optimist, and http-console.",
"tag" : "",
"html_url" : "https://github.com/indexzero/nodejs-intro"
},
"avatar_url" : "https://secure.gravatar.com/avatar/d43e8ea63b61e7669ded5b9d3c2e980f?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png",
"created_at" : ISODate("2011-02-01T10:20:29Z"),
"description" : "My introduction presentation to node.js along …Run Code Online (Sandbox Code Playgroud) 我有一个mongo文件的以下结构:
{
"_id": ObjectId("4fba2558a0787e53320027eb"),
"replies": {
"0": {
"email": ObjectId("4fb89a181b3129fe2d000000"),
"sentDate": "2012-05-21T11: 22: 01.418Z"
}
"1": {
"email": ObjectId("4fb89a181b3129fe2d000000"),
"sentDate": "2012-05-21T11: 22: 01.418Z"
}
"2" ....
}
}
Run Code Online (Sandbox Code Playgroud)
如何计算集合中所有文档的所有回复?谢谢!
我正在寻找一个与asp.net一起使用的NoSQL数据库,我来到了sisoDB.但据我所知,它使用Sql server来保存数据,所以它可以使用sql server功能,如安全性和....
这是对的吗 ?这种方法的优点和缺点是什么?
我有一个相当高负载的项目,在MySQL上运行大约1000万条记录,每秒约有500个请求.数据非常独特,缓存命中率仅为3%左右.每行有大约10个字段,其中2个索引.99%的查询使用两个索引字段进行请求.
我决定尝试使用NoSQL,而MongoDB并不是那么简单.使用简单的自定义脚本移动数据非常简单.数据库模式保持完全相同,我复制了相同的两个索引字段,这些字段仍然对90%的请求负责.然后我决定尝试一下并且非常震惊:MongoDB非常非常缓慢地回答查询.响应速率从每秒5到10个请求变化,而使用mysql则为500.
任何想法为什么会发生这种情况?这是正常的吗?在这种特殊情况下,我是否应该期望MongoDb的性能超过Mysql(10M记录,许多具有低缓存命中率的独特请求)?我觉得我错过了一点.
更新一些规格
我测试的服务器是带有4GB内存的四核xeon
MySQL表是(重命名的字段名称):
CREATE TABLE `table` (
`recordid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`var1` varchar(200) DEFAULT NULL,
`var2` char(32) DEFAULT NULL,
`var3` bigint(20) unsigned DEFAULT NULL,
`var4` smallint(5) unsigned DEFAULT NULL,
`var5` datetime DEFAULT NULL,
`var6` int(10) unsigned NOT NULL,
`var7` int(10) unsigned NOT NULL,
`var8` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`recordid`),
UNIQUE KEY `recordid_UNIQUE` (`recordid`),
KEY `keyvar7` (`var7`),
KEY `keyvar6` (`var6`)
Run Code Online (Sandbox Code Playgroud)
典型的查询是:SELECT var2,var4,var5,var6 from table,其中var7 = xxx,var6 = yyy
我通过比较使用索引和非索引字段的查询,验证了MongoDB正确复制了相同的索引.
UPDATE2 MongoDB .getIndexes()回复
> db.table.getIndexes(); …Run Code Online (Sandbox Code Playgroud) 我将大量数据插入RavenDB数据库; 大约2 500000条记录.这需要在尽可能短的时间内完成.
我使用一个列表来保存SaveChangesAsync返回的Task对象:
session.Store(loc);
splitter++;
if (splitter % 2048 == 0)
{
var t = session.SaveChangesAsync();
tasks.Add(t);
if (tasks.Count == 2)
{
Task.WaitAll(tasks.ToArray());
tasks.Clear();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在具有i7(8核)和12 GB RAM的机器上运行.如果我持有的Task对象的数量是2(如您在代码中看到的那样),但是如果我将此数字增加到8(核心数),则会收到System.IndexOutOfRangeException(有时会出现System.AggregateException: Raven.Abstractions.Exceptions.ConcurrencyException:PUT尝试使用非当前的etag文档'X/I'.
这里有什么问题?
谢谢
我想从一个文本文件(每行是一个类似csv的条目)导入1亿个条目到RavenDB数据库.最快的方法是什么?
补充说明:
我还没有任何索引(我会在插入数据后创建它们).RavenDB在本地计算机上以服务模式运行,没有任何安全性增强(但是因为我还在测试RavenDB).该测试将在2台不同的机器上运行,1)2芯4GB内存2)8芯12 GB内存.
我已经完成了将一部分数据(200万个条目)插入到RavenDB中,但它没有我想要的那么快.通过使用OpenAsyncSession并为每1024条记录调用SaveChangesAsync并再次通过调用OpenAsyncSession创建一个新会话,而不是在500'000条目之后等待返回任务(由SaveChangesAsync返回),我得到一个"索引超出范围"异常我无法根除.但是,如果我等待任务结束(通过创建与核心数相同的任务),过程将成功,但速度不够快.
此代码成功运行:
using (var reader = new StreamReader(@"D:\*\DATA.TXT", Encoding.UTF8))
{
string line = null;
IAsyncDocumentSession session = null;
var tasks = new List<Task>();
var locCount = 0;
while ((line = reader.ReadLine()) != null)
{
if (string.IsNullOrWhiteSpace(line)) continue;
var loc = Parse(line);
if (session == null) session = documentStore.OpenAsyncSession();
session.Store(loc);
locCount++;
if (locCount % 1024 == 0 && session != null)
{
try
{
var t = session.SaveChangesAsync();
tasks.Add(t);
session = null;
}
catch (Exception x)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个包含嵌入式文档的文档.即'key'=> array(...)
是否可以创建一个查询,以便对于嵌入式数组中的某些值,所有这些值都是$ lt某个值?
像这样:
{
'key.value' : { $lt : 5.0 }
}
Run Code Online (Sandbox Code Playgroud)
问题是,只要一个是$ lt然后它匹配我不想要的,我希望所有应该小于5.
我们目前正在考虑从日志记录迁移到文件,再到记录到NoSQL数据库.我们公司的另一个团队开始使用HBase,但对于我们想做的事情来说,这看起来非常复杂.我一直在看MongoDB,但我想要一些建议.
目前,我们在农场中有数百台服务器用于不同的应用.每当我们从其中一个应用程序中听到问题时,就会有一个很长的过程从app ops中检索日志,然后是一个漫长的过程来筛选它们以找到问题.我们正在考虑将所有日志记录移动到一个中心位置并围绕它构建Web UI,以便我们可以更轻松地访问和查询日志.
哪个NoSQL数据库非常适合存储和查询应用程序日志?
我的应用程序是一种POS系统.问题在于报告.每个产品,每个表,每个员工,类别的销售额.有1年的日期范围报告是非常缓慢的,因为他们必须总结很多行等.所以我想知道一个无sql数据库是否可以帮助,如每天有什么摘要或东西..但也许它不容易因为可能有每个项目*产品*类别*员工等查询.那我该怎么办?
nosql ×10
mongodb ×5
database ×3
asynchronous ×2
c# ×2
insert ×2
ravendb ×2
asp.net ×1
logging ×1
mongo-shell ×1
sisodb ×1
sql-server ×1