分享

asp.net Mongodb 的一个问题,哪位大哥帮我看下问题出现在哪里了

ice_yunyi 发表于 2013-10-17 21:37:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 6600
我在页面里面写了一个方法,通过Mongodb的["_id"]来查找记录
而Mongodb的["_id"]的值在cmd命令里面看的到格式是 "_id" : ObjectId("4e089a6ec6c7e91b6cf2e50d")
我后台获取的Mongodb的["_id"]值为"4e089a6ec6c7e91b6cf2e50d";
所以无法匹配ObjectId("4e089a6ec6c7e91b6cf2e50d")的格式,所以一直查找不到数据,
使用过mongodb的大哥帮我解决下,谢谢了
下面是代码:
public List GetUserFriendByuserId(object id)
  {
  try
  {
  // strid = userid;
  DateTime BeginTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
  list = new List();
  // MongoDB连接串,以[mongodb://]开头。这里,我们连接的是本机的服务
  string connectionString = "mongodb://192.168.1.112:27017";
  // 连接到一个MongoServer上
  MongoServer server = MongoServer.Create();
  // -------------------------------------------------------------------------
  // 打开数据库MonDB
  MongoDatabase db = server.GetDatabase("MonDB");
   
  // 获取集合BsonDocument
  MongoCollection[B] collection = db.GetCollection[B]("FriendsNews");
  // -------------------------------------------------------------------------
  // 查询上面那个刚刚插进去的数据,就这格式了,看看QueryDocument的文档吧
  QueryDocument query = new QueryDocument();
  query.Add("_id",id);//查询条件对象赋值
  int it = collection.Count();
   
  // 遍历结果
  foreach (BsonDocument emp in collection.Find(query))
  {
  // BsonValue有两种取值方式,下面两个都用了一个是AsXXX,一个是ToXXX
  // Console.WriteLine("name:{0}\ttitle:{1}", emp["userid"].AsString, emp["fridenid"].ToString());
  FriendsNews info = new FriendsNews();
  info._id = emp["_id"].ToString();
  info.userid = emp["userid"].ToString();
  info.fridenid = emp["fridenid"].ToString();
  info.title = emp["title"].ToString();
  list.Add(info);
  }
  server.Disconnect();//关闭连接
  DateTime endTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
  TimeSpan t = endTime.Subtract(BeginTime);
  this.Label10.Text = "总共用了" + t.TotalSeconds * 1000 + "毫秒";
  }
  catch
  {
  this.Label8.Text = "失败";
  this.Btn_Down.Visible = false;
  this.Btn_Up.Visible = false;
  this.Label1.Visible = false;
  }
   
  return list;
  // return collection;
  }
              
               
               

已有(7)人评论

跳转到指定楼层
xuexiaodong2009 发表于 2013-10-17 21:38:40

            没用过,帮顶
        
回复

使用道具 举报

Thomas_Chen 发表于 2013-10-17 21:39:32

            帮顶  接分
        
回复

使用道具 举报

bearfly2011 发表于 2013-10-17 21:40:15

            这个东西没用过,不过如果格式固定,且方法独立的话,你可以手动在后台构造一下,在外面加上ObjectId、引号和括号,临时解决一下
        
回复

使用道具 举报

ice_yunyi 发表于 2013-10-17 21:41:00

            引用 3 楼 bearfly2011 的回复:这个东西没用过,不过如果格式固定,且方法独立的话,你可以手动在后台构造一下,在外面加上ObjectId、引号和括号,临时解决一下
我试过了,没有用,貌似它有自己的结构,或许我对它的理解还不深入,没有找到,还是谢谢你了
        
回复

使用道具 举报

wknight_IT 发表于 2013-10-17 21:41:55

            nosql,好高级,没用过,帮顶
        
回复

使用道具 举报

xiaozhu1989122 发表于 2013-10-17 21:42:39

            query.Add("_id",id);    换成. query.Add("_id",new BsonObjectId(id));
        
回复

使用道具 举报

zhouyimei 发表于 2013-10-17 21:43:09

              BsonObjectId t=new BsonObjectId("50dd08281aac170e65303292");
        query.Add("_id", t);
        collection.find(query);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条