小介绍:
我试图用sql数据库,实体框架,linq开发我的项目.我有表'用户',例如我有用户教育列表.我问自己:'用户可以有多少教育?1,2,10 ......'?并且似乎99%的情况不超过10.因此对于sql中的这样的示例我需要创建引用表'Educations'.对?如果我需要显示用户教育和用户我需要加入上面提到的表...但是如果用户有10个甚至更多的集合,每个集合不超过10个项目呢?我需要在sql中创建10个引用表?当我需要显示时加入所有这些?为了获得更好的性能,我创建了具有我需要在ui上显示的数据形状的denormized表.每次用户更新时,我都需要更新已批准的结构.
现在我重新开发了我的项目以使用文档数据库(MongoDB).我已经为User创建了一个文档,其中包含了所有10个集合.
可能是我失去了什么?但似乎文档数据库在这里获胜.它非常快速且非常容易支持.+1来记录数据库.
那么,您对什么更好地使用文档数据库或SQL数据库有什么看法?
什么时候我应该使用文档数据库和什么时候sql?
我在我的网站上有一个文件上传,这是使用uploadify完成的,它使用ashx页面将文件上传到数据库.它在IE中工作正常,但在Mozilla中,context.Session变为null.我也习惯于IReadOnlySessionState读取会话.
我怎么能像IE一样在Mozilla中获得会话.
这是我做过的ashx代码
public class Upload : IHttpHandler, IReadOnlySessionState
{
HttpContext context;
public void ProcessRequest(HttpContext context)
{
string UserID = context.Request["UserID"];
context.Response.ContentType = "text/plain";
context.Response.Expires = -1;
XmlDocument xDoc = new XmlDocument();
HttpPostedFile postedFile = context.Request.Files["Filedata"];
try
{
if (context.Session["User"] == null || context.Session["User"].ToString() == "")
{
context.Response.Write("SessionExpired");
context.Response.StatusCode = 200;
}
else
{
// does the uploading to database
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在IE中Context.Session["User"]总是有值,但在Mozilla中它始终为null
使用某些查询的分页结果我需要从哪个页面获取一个点.当您将该点推出范围时,该对象将返回位于右侧页面的数据,从而在该页面打开分页结果.
如果可以像这个样本一样获得分页结果,那么我如何从一个项目中获取来自哪个页面?
paging
.skip(PAGE_SIZE * (PAGE_NUMBER - 1)).limit(PAGE_SIZE)
public List<BsonItem> GetData(QueryComplete query, int take, int skip, SortByBuilder sort)
{
var cursor = Db.Data.FindAs<BsonItem>(query);
if (skip > 0)
cursor.SetSkip(skip);
if (take > 0)
cursor.SetLimit(take);
if (sort != null )
cursor.SetSortOrder(sort);
return cursor.ToList();
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我正在使用官方的MongoDb C#驱动程序.
我的场景:我将对象存储到MongoDb中.所有对象都是从同一根类继承的类的实例.在设计时我不知道所有可以存储的类(即它们都可以插入) - 所以我需要一些方法告诉序列化器/驱动程序如何将类映射到文档(文档中的描述符).
有人有任何想法吗?
我正在尝试使用以下代码将对象持久化到MongoDB中:
public class myClass
{
public string Heading { get; set; }
public string Body { get; set; }
}
static void Main(string[] args)
{
var mongo = MongoServer.Create();
var db = mongo.GetDatabase("myDb");
var col = db.GetCollection<BsonDocument>("myCollection");
var myinstance = new myClass();
col.Insert(myinstance);
var query = Query.And(Query.EQ("_id", new ObjectId("4df06c23f0e7e51f087611f7)));
var res = col.Find(query);
foreach (var doc in res)
{
var obj = BsonSerializer.Deserialize<myClass>(doc);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在尝试反序列化文档时,我收到以下异常'意外元素:_id'.
那么我需要以另一种方式反序列化吗?这样做的首选方式是什么?
TIA
索伦
我想使用 mongodb 和锂构建一个网络服务。什么是更好的:
将所有客户端的数据存储在一个集合中(例如,多个客户端的所有交易文档都存储在一个集合中)
创建多个集合,例如 transactions_client1、transaction_client2 等。
每个客户一个数据库
系统必须是可扩展的并且必须易于部署
我是 mongo 的新手,到目前为止使用它没有问题。直到我坚持这一点。我需要将文档推送到数组内的数组。可以参考下面的json。
{
'user_id':'{1231mjnD-32JIjn-3213}',
'name':'John',
'campaigns':
[
{
'campaign_id':3221,
'start_date':'12-01-2012',
'messages':
[
{
'message_id':211134,
'email':'john@gmail.com'
}
]
},
{
'campaign_id':3222,
'start_date':'13-01-2012',
'messages':
[
{
'message_id':315521,
'email':'john@gmail.com'
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想将一个文档推送到活动数组中的一组消息(无论排序如何)。这意味着,我需要将新文档附加到消息数组中。所有这些消息都来自每个用户的另一个数组或活动。我使用 python 所以我的代码会是这样的。
query = {"user_id" : "{1231mjnD-32JIjn-3213}", "campaigns.campaign_id": 3221}
message = {"message_id":4213122, "email":"john@gmail.com"}
op = {"$push" : {"campaigns.messages":message}}
mongo.TestDatabase.members.update(query, op)
Run Code Online (Sandbox Code Playgroud)
执行时没有错误。但是文档似乎没有变化(没有进行更新)。我在这里做错了什么?
我想知道C#中等效的Java DataInputStream类是什么
我知道这是一个相当奇怪的问题,请不要激怒我:)
我有一个具体的需要"降级"当前Asp.Net MVC 3(.NET框架4)应用到Asp.Net MVC 2(.NET框架3.5),因为我们共同的托管服务提供商不支持.NET 4.0(我知道这是疯狂的考虑自2010年4月12日开始零售以来,2009年5月首次推出测试版,但这不是帖子的重点.
是否有任何工具,指南或任何可能有助于此过程的东西?我有点迷失,因为我升级了许多应用程序,但我从来没有必要降级一个.
除了严格意义上的MVC之外,我正在使用一个带有EF Code First的数据层(也许nhibernate将是替换它的最佳工具?)
任何帮助,提示,信息,任何赞赏.
谢谢.
编辑:更改托管服务提供商不是一个选项,否则我根本不会发布这个.我个人反对这种降级 - 我发现它完全没有意义 - 但它仍然是唯一的选择.
请告诉我如何通过fields-arrays进行搜索?我有一些类型的领域List<Int64>.例如,第一个文档具有数字[1,2,3,4]的字段数组,第二个文档具有数字[4,5,6,7]的字段.
我想找到我的字段包含3和4个数字的文档,因此它是第一个文档.我正在寻找基于官方MongoDB C#驱动程序的示例;)
非常感谢你!!!
mongodb ×7
c# ×6
.net ×2
asp.net ×1
asp.net-mvc ×1
c#-4.0 ×1
downgrade ×1
ihttphandler ×1
java ×1
lithium ×1
nosql ×1
pagination ×1
performance ×1
persist ×1
python ×1
search ×1
sql ×1
uploadify ×1