我通过官方C#驱动程序和ASP.NET MVC网站使用MongoDB.
我有以下C#模型:
public class Contact
{
public ObjectId Id { get; set; }
public string Name { get; set; }
public DateTime DateAdded { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
从MongoDB中提取并通过MVC序列化为JSON字符串时,如下所示:
{
"_id" : ObjectId("52eaad4839b60812fca4bf28"),
"Name": "Joe Blow",
"DateAdded" : ISODate("2014-01-30T19:51:35.977Z")
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过JSON.parse()将其从JSON字符串转换为浏览器上的Javascript对象时,我收到以下错误:
Uncaught SyntaxError: Unexpected token I
这是因为ISODate(...)JSON无效
ObjectId()也是无效的JSON,但我正在处理的方式是string.replace()在客户端解析之前简单地对JSON字符串执行.我考虑做同样的事情,ISODate()但感觉有点太hacky.
如果不在客户端使用正则表达式,我能做些什么吗?也许来自MongoDB驱动程序的东西?
我正在使用C#驱动程序将文档插入MongoDB集合,当我调试应用程序时,其中一个字段类型与DateTime我在"FrameTimeStamp"字段中看到服务器时间我将传递给Mongo,这是我的代码:
FrameDocument frameDoc = new FrameDocument();
frameDoc.Frame = imageBA;
frameDoc.EventCodeId = 1;
frameDoc.SesionId = 1;
frameDoc.FrameTimeStamp = DateTime.Now;
frameDoc.ServerUserId = (int)toMongoDt.Rows[0]["ServerUserId"];
frameDoc.TraderId = (int)toMongoDt.Rows[0]["TraderId"];
frameDoc.ActivePick = (int)toMongoDt.Rows[0]["ActivePick"];
frameDoc.TraderName = (string)toMongoDt.Rows[0]["TraderName"];
frameDoc.ServerUserName = (string)toMongoDt.Rows[0]["ServerUserName"];
var mongoCon = "mongodb://127.0.0.1";
MongoClient client = new MongoClient(mongoCon);
var db = client.GetDatabase("Video");
var frameCollection = db.GetCollection<FrameDocument>("Frame");
frameCollection.InsertOne(frameDoc);
Run Code Online (Sandbox Code Playgroud)
在shell中,当我读取数据时,我会看到以下格式: 2016-08-14T06:10:33.295Z并且时间不是服务器时间,它的UTC,我如何强制mongo将DateTime写为我通过了,?