C# 如何使用C从MongoDB中的字段中获取所有值
因此,我尝试使用asp.NETMVC创建一个网站,其中包括一个聊天应用程序,该应用程序使用MongoDb存储消息。我遇到的问题是,我不知道如何从集合中检索所有消息并在视图中显示它们 这是我的模型:C# 如何使用C从MongoDB中的字段中获取所有值,c#,asp.net,asp.net-mvc,mongodb,mongodb-query,C#,Asp.net,Asp.net Mvc,Mongodb,Mongodb Query,因此,我尝试使用asp.NETMVC创建一个网站,其中包括一个聊天应用程序,该应用程序使用MongoDb存储消息。我遇到的问题是,我不知道如何从集合中检索所有消息并在视图中显示它们 这是我的模型: public class MessageViewModel { public ObjectId _id { get; set; } public string FirstName { get; set; } public string UserName { ge
public class MessageViewModel
{
public ObjectId _id { get; set; }
public string FirstName { get; set; }
public string UserName { get; set; }
public string Text { get; set; }
}
我的控制器:
MongoClient client;
IMongoDatabase database;
public UserController()
{
client = new MongoClient("mongodb://localhost:27017");
database = client.GetDatabase("UserMessaging");
}
public ActionResult Messages()
{
var username = User.Identity.Name;
MessageViewModel model = new MessageViewModel();
var messageCollection = database.GetCollection<MessageViewModel>("messages");
var messages = from m in messageCollection.AsQueryable()
where m.UserName == User.Identity.GetUserName()
select m;
return View(messages.ToList());
}
我的看法是:
<h2>Messages</h2>
<form class="navbar-form">
<input type="text" class="form-control" id="SearchUser" placeholder="Type a user" />
<input type="hidden" id="project-id" />
</form>
<div class="container">
<ul id="discussion">
@if (Model != null)
{
{ int i = 0; }
foreach (var item in Model)
{
<li><p>@item.Text</p></li>
}
}
</ul>
</div>
我是MongoDb的新手,所以如果我完全毁了它,我很抱歉!如果你需要更多的细节,请告诉我。
谢谢大家! 解决了这个问题!该行:
var messageCollection = database.GetCollection<MessageViewModel>("messages")
在我的控制器中,应该是:
var messageCollection = database.GetCollection<MessageViewModel>("message")
解决了问题!该行:
var messageCollection = database.GetCollection<MessageViewModel>("messages")
在我的控制器中,应该是:
var messageCollection = database.GetCollection<MessageViewModel>("message")
只是想一想,如果您使用的是MongoDb 2.0驱动程序和async,那么您可以使用本机Find,它的外观如下所示:
var messageCollection = database.GetCollection<MessageViewModel>("message")
var results = messageCollection.Find(x => true).ToListAsync();
这将返回集合中的所有项目。不过,如果您使用的是MongoDb 2.0驱动程序和异步,那么您可以使用本机查找,它的外观如下所示:
var messageCollection = database.GetCollection<MessageViewModel>("message")
var results = messageCollection.Find(x => true).ToListAsync();
这将返回集合中的所有项目您能解释一下发生了什么吗?你什么也没得到吗?一些你在shell/你最喜欢的编辑器中找到工作了吗?它在你的控制器中,但不在前端谢谢你的快速回复!我的视图加载得很好,并且与数据库建立了连接。我不知道我是否能得到任何回报。是的,我的发现在贝壳里起作用。我不知道你最后一个问题是什么意思,对不起。希望这有帮助@Hoefmeister我的意思是,你的代码在你的控制器中,消息var包含了什么,还是它empty@HoefMeistert里面有东西。它成功地从数据库中获取了值,但不会在视图中显示结果。解决了问题!我的控制器中的行var messageCollection=database.GetCollectionmessages应该是var messageCollection=database.GetCollectionmessage!那只是个打字错误!谢谢@hoefmeister的帮助!你能解释一下发生了什么吗?你什么也没得到吗?一些你在shell/你最喜欢的编辑器中找到工作了吗?它在你的控制器中,但不在前端谢谢你的快速回复!我的视图加载得很好,并且与数据库建立了连接。我不知道我是否能得到任何回报。是的,我的发现在贝壳里起作用。我不知道你最后一个问题是什么意思,对不起。希望这有帮助@Hoefmeister我的意思是,你的代码在你的控制器中,消息var包含了什么,还是它empty@HoefMeistert里面有东西。它成功地从数据库中获取了值,但不会在视图中显示结果。解决了问题!我的控制器中的行var messageCollection=database.GetCollectionmessages应该是var messageCollection=database.GetCollectionmessage!那只是个打字错误!谢谢@hoefmeister的帮助!