在使用Id和Other这两个标准进行查询时,我没有明确地提出问题。我使用存储库来存储一些数据,比如id、iso、value。我已经创建了一个索引(“_id”,"Iso")来执行查询,但是如果我只使用一个条件(如_id),那么查询只返回我的游标,而如果使用两个(_id,Iso) (注释代码),则不返回任何内容。
是索引影响了响应还是查询方法失败了?
使用:v1.6.5和C#官方。
示例。
//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();
}
}数据:
{
"_id": "2345019",
"Iso": "UK",
"Data": "Some data"
}在那之后,我使用Update.Set()方法更新了我的数据。我可以使用MongoView查看更改后的数据。新数据是正确的,但是查询总是返回相同的旧值。为了查看这些值,我使用了一个最终可以缓存的页面,但是如果在末尾添加时间戳不会改变任何东西,那么页面总是返回相同的旧数据。欢迎您的评论,谢谢。
发布于 2011-02-23 22:52:08
我不记得C#驱动程序是如何创建索引的,但用于创建索引的外壳命令如下所示:
db.things.ensureIndex({j:1});注意'1‘,它就像是在说'true’。
在你的代码中,你有:
helper.Db.Repository.EnsureIndex("_Id","Iso");也许它应该是:
helper.Db.Repository.EnsureIndex("_Id", 1);
helper.Db.Repository.EnsureIndex("Iso", 1);这也可能与您在"_Id“上创建索引,而实际的id字段称为"_id”有关……MongoDB区分大小写。
快速浏览索引文档:http://www.mongodb.org/display/DOCS/Indexes
https://stackoverflow.com/questions/5091987
复制相似问题