本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html 欢迎转载 ,请保留此链接๑•́ ₃•̀๑!
本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操作。
目录
查询操作
- "$gt" 、"$gte"、 "$lt"、 "$lte"、"null查询"、"$all"、"$size"、"$in"、"$nin"、
- "$and"、"$nor"、"$not"、"$or"、"$exists"、"$mod"、"$regex"、"$where"、"$slice"
1.1 集合查询方法 find()
db.collection.find() 查询集合中文档并返回结果为游标的文档集合。
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的文档集合。
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且性别为男性的文档集合:
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"键,可以使用如下查询返回这些键,。
上面查询结果中,"_id"这个键总是被返回,即便是没有指定也一样。但是我们可以显示的将其从查询结果中移除掉。
在第二个参数中,指定键名且值为1或者true则是查询结果中显示的键;若值为0或者false,则为不显示键。文档中的键若在参数中没有指定,查询结果中将不会显示(_id例外)。这样我们就可以灵活显示声明来指定返回的键。
我们在使用RDMS时,有时会对表中多个字段之间进行比较。如表store中,有销售数量soldnum和库存数量stocknum两个字段,我们要查询表中销售数量等于库存数量的记录时可以使用下面的sql语句:
那么换成mongodb呢,使用fi
<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,转载请注明。
{
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.Cassandra10;
using Aquiles.Core.Cluster;
3.初始化成员变量
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.建立一个通用的修改多行多列的方法,其它改变方式可以在此基础上完成调用,如修改一多一列,一行多列等。
{
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