169it科技资讯
169it -->


当前位置:  数据库>nosql
本页文章导读:
    ▪MongoDB学习 (六):查询 - 辞职回家卖烧饼       本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑!   本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操......
    ▪在.net中使用aquiles访问Cassandra(一) - amwicfai      aquiles是.net下基于Thrift协议访问Cassandra的第三方类库,官方地址是:http://aquiles.codeplex.com/ 1.下载类库文件:http://aquiles.codeplex.com/releases 2.添加引用Aquiles.Core.dllAquiles.Cassandra10.dllThrift.dll&......
    ▪在.net中使用aquiles访问Cassandra(二) - amwicfai      上文中我们已经建立了项目的基本结构,今天实现数据的修改。在NoSQL中,通常添加和修改都认为是对数据的一种Mutation。 1.建立描述修改Row的实体。 public class RowMutation { public str......
      最新IT科技资讯推荐: -1

[1]MongoDB学习 (六):查询 - 辞职回家卖烧饼
    来源:    发布时间: 2013-10-18

 本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑!  

 本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操作。

目录

  • 查询操作

  • 集合查询方法 find()
  • 查询内嵌文档
  • 查询操作符(内含 数组查询)
    • "$gt" 、"$gte"、 "$lt"、 "$lte"、"null查询"、"$all"、"$size"、"$in"、"$nin"、
    • "$and"、"$nor"、"$not"、"$or"、"$exists"、"$mod"、"$regex"、"$where"、"$slice"
  •  

     

    1.1 集合查询方法 find()

    db.collection.find()  查询集合中文档并返回结果为游标的文档集合。

    语法:db.collection.find(query, projection)
    参数      类型     描述 
    query    文档  可选. 使用查询操作符指定查询条件
    projection   文档  可选.使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略).

    返回值: 匹配查询条件的文档集合的游标. 如果指定投影参数,查询出的文档返回指定的键 ,"_id"键也可以从集合中移除掉。 注意:在mongo shell中我们不需要JavaScript游标处理方法就可以直接访问作为查询结果的文档集合。mongo shell默认返回游标中的前20条文档。当执行查询操作时,mongo shell直接自动的对游标执行迭代操作并显示前20条文档。输入"it"显示接下来的20条文档。

      find的第一个参数是查询条件,其形式也是一个文档,决定了要返回哪些文档,空的査询文档{}会匹配集合的全部内容。要是不指定査询文档,默认就是{},如同SQL中"SELECT * FROM TABLENAME"语句。

    //将返回集合中所有文档
    db.collection.find()
    //或者
    db.collection.find({})

      第一个参数若为键/值对时,查询过程中就意味着执行了条件筛选,就如同我们使用Linq查询数据库一样。下面查询操作将返回user集合中age键值为16的文档集合。

    //mongo db
    db.user.find({age:16})

    //Linq to sql
    dbContext.user.select(p=>p.age==16)

      上面的查询默认执行“==”操作(就如同linq中 p.age==16),文档中若存在相同键的值和查询文档中键的值相等的话,就会返回该文档。

      第一个参数若包含多个键/值对(逗号分隔),则相当于查询AND组合条件,“条件1 AND条件2 AND…AND 条件N".例如查询年龄为28且性别为男性的文档集合:

    //mongo db
    db.user.find({age:28,sex:"male"})

    //Linq to sql
    dbContext.user.select(p=>p.age==28&&p.sex=="male")

    //SQL
    SELECT * FROM user WHERE age=28 AND sex="male"

     

    指定返回的键

      我们可以通过find 的第二个参数来指定返回的键。

      若find不指定第二个参数,查询操作默认返回查询文档中所有键值。像SQL中我们可以指定查询返回字段一样 ,mongo中也可以指定返回的键,这样我们就可以避免查询无用键值查询所消耗的资源、会节省传输的数据量和内存消耗。

        集合user包含 _id,name,age,sex,email等键,如果查询结果想只显示集合中的"name"和"age"键,可以使用如下查询返回这些键,。

    > db.users.find({}, {"name" : 1, "age" : 1})

      上面查询结果中,"_id"这个键总是被返回,即便是没有指定也一样。但是我们可以显示的将其从查询结果中移除掉。

    > db.users.find({}, {"name" : 1, "age" : 1, "_id":0})

      在第二个参数中,指定键名且值为1或者true则是查询结果中显示的键;若值为0或者false,则为不显示键。文档中的键若在参数中没有指定,查询结果中将不会显示(_id例外)。这样我们就可以灵活显示声明来指定返回的键。

      我们在使用RDMS时,有时会对表中多个字段之间进行比较。如表store中,有销售数量soldnum和库存数量stocknum两个字段,我们要查询表中销售数量等于库存数量的记录时可以使用下面的sql语句:

    SELECT * FROM store WHERE soldnum=stocknum

      那么换成mongodb呢,使用fi

        
    [2]在.net中使用aquiles访问Cassandra(一) - amwicfai
        来源:    发布时间: 2013-10-18
    aquiles是.net下基于Thrift协议访问Cassandra的第三方类库,官方地址是:
    http://aquiles.codeplex.com/
     
    1.下载类库文件:
    http://aquiles.codeplex.com/releases
     
    2.添加引用
    Aquiles.Core.dll
    Aquiles.Cassandra10.dll
    Thrift.dll
     
    3.添加配置文件
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>

    <configSections>
    <section name="aquilesConfiguration" type="Aquiles.Core.Configuration.AquilesConfigurationSection,Aquiles.Core"/>
    </configSections>

    <aquilesConfiguration>
    <clusters>
    <add friendlyName="Test_Cluster">
    <connection poolType="SIZECONTROLLEDPOOL" factoryType="FRAMED">
    </connection>
    <endpointManager type="ROUNDROBIN" defaultTimeout="6000">
    <cassandraEndpoints>
    <add address="*.*.*.*" port="9160"/>
    <add address="*.*.*.*" port="9160"/>
    <add address="*.*.*.*" port="9160"/>
    </cassandraEndpoints>
    </endpointManager>
    </add>
    </clusters>
    </aquilesConfiguration>

    <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>

    </configuration>

     


    本文链接:http://www.cnblogs.com/amwicfai/p/3211072.html,转载请注明。


        
    [3]在.net中使用aquiles访问Cassandra(二) - amwicfai
        来源:    发布时间: 2013-10-18
    上文中我们已经建立了项目的基本结构,今天实现数据的修改。在NoSQL中,通常添加和修改都认为是对数据的一种Mutation。
     
    1.建立描述修改Row的实体。
    public class RowMutation
    {
    public string Key { get; set; }

    public IList<CellMutation> Mutations { get; set; }

    public RowMutation()
    {

    }

    public RowMutation(string key)
    {
    Key = key;
    }

    public RowMutation(string key, IList<CellMutation> mutations)
    {
    Key = key;
    Mutations = mutations;
    }
    }

    public class CellMutation
    {
    public string ColumnName { get; set; }

    public string DataValue { get; set; }

    public CellMutation()
    {

    }

    public CellMutation(string name)
    {
    ColumnName = name;
    }

    public CellMutation(string name, string value)
    {
    ColumnName = name;
    DataValue = value;
    }
    }

    2.引用aquiles命名空间。

    using Aquiles.Helpers.Encoders;
    using Aquiles.Cassandra10;
    using Aquiles.Core.Cluster;

    3.初始化成员变量

    private string _clusterName { get; set; }
    private ConsistencyLevel _consistencyLevel { get; set; }
    private string _keyspaceName { get; set; }
    private ICluster _cluster = null;

    public AquilesDemo()
    {
    _clusterName = "xxxx";
    _consistencyLevel = ConsistencyLevel.LOCAL_QUORUM;
    _keyspaceName = "xxxx";

    _cluster = AquilesHelper.RetrieveCluster(_clusterName);
    }

    4.建立一个通用的修改多行多列的方法,其它改变方式可以在此基础上完成调用,如修改一多一列,一行多列等。

    public void Mutate(string columnFamily, IList<RowMutation> rowMutations)
    {
    if (string.IsNullOrWhiteSpace(columnFamily)) throw new ArgumentNullException("columnFamily");

    rowMutations = PrepareMutationList(rowMutations);
    Dictionary<byte[], Dictionary<string, List<Apache.Cassandra.Mutation>>> mutation_map = new Dictionary<byte[], Dictionary<string, List<Apache.Cassandra.Mutation>>>();

    foreach (var rowMutation in rowMutations)
    {
    byte[] key = ByteEncoderHelper.UTF8Encoder.ToByteArray(rowMutation.Key);

    Dictionary<string, List<Apache.Cassandra.Mutation>> cfMutation = new Dictionary<string, List<Apache.Cassandra.Mutation>>();
    List<Apache.Cassandra.Mutation> mutationList = new List<Apache.Cassandra.Mutation>();

    foreach (CellMutation cellMutation in rowMutation.Mutations)
    {
    if (cellMutation.DataValue == null) continue;

    Apache.Cassandra.Mutation mutation = new Apache.Cassandra.Mutation()
    {
    Column_o
        
    最新技术文章:
     




    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2015,169IT.COM,站长邮箱:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号