首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB C#办公软件List<BsonObject>查询问题和始终旧值?

MongoDB C#办公软件List<BsonObject>查询问题和始终旧值?
EN

Stack Overflow用户
提问于 2011-02-23 22:09:56
回答 1查看 524关注 0票数 0

在使用Id和Other这两个标准进行查询时,我没有明确地提出问题。我使用存储库来存储一些数据,比如id、iso、value。我已经创建了一个索引(“_id”,"Iso")来执行查询,但是如果我只使用一个条件(如_id),那么查询只返回我的游标,而如果使用两个(_id,Iso) (注释代码),则不返回任何内容。

是索引影响了响应还是查询方法失败了?

使用:v1.6.5和C#官方。

示例。

代码语言:javascript
复制
//Getting Data
public List<BsonObject> Get_object(string ID, string Iso)
{
    using (var helper = BsonHelper.Create())
    {
        //helper.Db.Repository.EnsureIndex("_Id","Iso");
        var query = Query.EQ("_Id", ID);
        //if (!String.IsNullOrEmpty(Iso))
        //    query = Query.And(query, Query.EQ("Iso", Iso));
        var cursor = helper.Db.Repository.FindAs<BsonObject>(query);
        return cursor.ToList();
    }
}

数据:

代码语言:javascript
复制
{  
    "_id": "2345019",  
    "Iso": "UK",  
    "Data": "Some data"  
}

在那之后,我使用Update.Set()方法更新了我的数据。我可以使用MongoView查看更改后的数据。新数据是正确的,但是查询总是返回相同的旧值。为了查看这些值,我使用了一个最终可以缓存的页面,但是如果在末尾添加时间戳不会改变任何东西,那么页面总是返回相同的旧数据。欢迎您的评论,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-23 22:52:08

我不记得C#驱动程序是如何创建索引的,但用于创建索引的外壳命令如下所示:

代码语言:javascript
复制
db.things.ensureIndex({j:1});

注意'1‘,它就像是在说'true’。

在你的代码中,你有:

代码语言:javascript
复制
helper.Db.Repository.EnsureIndex("_Id","Iso");

也许它应该是:

代码语言:javascript
复制
helper.Db.Repository.EnsureIndex("_Id", 1);
helper.Db.Repository.EnsureIndex("Iso", 1);

这也可能与您在"_Id“上创建索引,而实际的id字段称为"_id”有关……MongoDB区分大小写。

快速浏览索引文档:http://www.mongodb.org/display/DOCS/Indexes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5091987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档