问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何更新mongodb中的数组

发布网友 发布时间:2022-05-01 21:40

我来回答

2个回答

懂视网 时间:2022-05-02 02:01

using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace KyeDePart.Common.BLL
{
 public class MongoDBHelper<T> where T : class
 {
 protected MongoClient mongoclient;
 protected IMongoDatabase database;
 protected IMongoCollection<T> collection;
 //public static MongoDBHelper<T> MongoDB=new MongoDBHelper<T>();

 /// <summary>
 /// 初始化操作
 /// </summary>
 public MongoDBHelper()
 {
  try
  {
  mongoclient = new MongoDB.Driver.MongoClient(ConfigurationSettings.AppSettings["MongoConnect"]);
  database = mongoclient.GetDatabase(ConfigurationSettings.AppSettings["MongoDatabase"]);
  collection = database.GetCollection<T>(typeof(T).Name);
  }
  catch (Exception ex)
  {
  Common.WriteLogFile(ex.ToString());
  }
 }

 /// <summary>
 /// MongoDB 语法
 /// </summary>
 /// <param name="filter"></param>
 /// <returns></returns>
 public T Query(FilterDefinition<T> filter)
 {
  return collection.Find(filter).FirstOrDefaultAsync().Result;
 }

 /// <summary>
 /// Linq 语法 
 /// </summary>
 /// <param name="func"></param>
 /// <returns></returns>
 public T Query(Expression<Func<T, bool>> func)
 {
  //collection.Find(func).ForEachAsync(x =>Console.WriteLine(""));
  return collection.Find(func).FirstOrDefaultAsync().Result;
 }

 public List<T> QueryList(FilterDefinition<T> filter)
 {
  //var s = collection.Find(filter).ForEachAsync(x => Console.WriteLine(""));
  return collection.Find(filter).ToListAsync().Result;
 }

 public List<T> QueryList(Expression<Func<T, bool>> func)
 {
  return collection.Find(func).ToListAsync().Result;
 }

 /// <summary>
 /// 分页查询
 /// Skip 性能不高
 /// </summary>
 
 /// <returns></returns>
 public List<T> QueryList(int PageIndex, int PageSize, Expression<Func<T, bool>> func, out long RecordCount)
 {
  RecordCount = collection.Find(func).Count();

  //方法一:
  return collection.AsQueryable<T>().Where(func).OrderByDescending(t => "_id").Skip(PageIndex * PageSize).Take(PageSize).ToList();

  

 }

 public bool IsExist(FilterDefinition<T> filter)
 {
  if (collection.Find(filter).FirstAsync().Result != null)
  return true;
  else
  return false;
 }
 public bool IsExist(Expression<Func<T, bool>> func)
 {
  if (collection.Find(func).FirstOrDefaultAsync().Result != null)
  return true;
  else
  return false;

  //long count = collection.CountAsync(func).Result;
  //if (count > 0)
  // return true;
  //else
  // return false;
 }

 public void Add(T model)
 {
  collection.InsertOneAsync(model);
 }

 public void Delete(Expression<Func<T, bool>> func)
 {
  collection.DeleteOneAsync(func);
 }

 public void Delete(FilterDefinition<T> filter)
 {
  collection.DeleteOneAsync(filter);
 }
 public void DeleteMany(Expression<Func<T, bool>> func)
 {
  collection.DeleteMany(func);
 }

 public void Update(FilterDefinition<T> filter, UpdateDefinition<T> updated)
 {
  collection.UpdateOneAsync(filter, updated);
 }
 public void UpdateMany(FilterDefinition<T> filter, UpdateDefinition<T> updated)
 {
  collection.UpdateManyAsync(filter, updated);
 }

 public void Update(Expression<Func<T, bool>> func, UpdateDefinition<T> updated)
 {
  collection.UpdateOneAsync(func, updated);
 }

 public void UpdateMany(Expression<Func<T, bool>> func, UpdateDefinition<T> updated)
 {
  collection.UpdateManyAsync(func, updated);
 }
 }
}

  Model

 public class PerSon
 {
 public ObjectId _id;
 public string Name { get; set; }
 public int Age { get; set; }
 }

  

使用方法

public class PerSonBLL
 {
 protected static MongoDBHelper<Models.PerSon> mongoDB = new MongoDBHelper<Models.PerSon>();
 public static List<Models.PerSon> GetList()
 {
  return mongoDB.QueryList(t => t.Age > 10);
 }

 }

  

MongoDBHelper

标签:mode   art   eric   upd   foreach   base   names   lin   ted   

热心网友 时间:2022-05-01 23:09

官方参考:
http://docs.mongodb.org/manual/reference/operator/update/positional/#up._S_
提供参考代码:
exports.updateReply1Async = function (opts) {
var results = {error_code: -1, error_msg: "error"};
var suggestID = helper.toObjectID(opts.doc.suggestID);
var filter = {_id: suggestID,"replies.rid":opts.doc.rid};
var update = {$set: {"replies.$.replycontent": opts.doc.replynewcontent,"replies.$.reply_at":new Date()}};
return opts.dbs.csdb.collection("suggests").findOneAndUpdateAsync(filter, update, {upsert: false})
.timeout(opts.configs.timeoutnormal)
.then(function (value) {
。。。

});

};
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求助:补全成语. _然而止、_然不屈、_然四顾、_然若失、_然而至、_然拒绝、_然无声... 我姑妈(姑妈去世),现奶奶的房产 姑妈的女儿有继承权吗? 丈夫去世遗产应该能怎么分配 《人世间》骆士宾遗产股权归谁所有 为什么说曹珊不应该得罪水自流_百 ... 有谁知我国十大元帅及十大上将? 解放中国的10大元帅是那几个? 对中国有何影响? 中国历史上的十大元帅 为什么中国过去有元帅现在没有了 ...想看中国80年代、90年代热播的电视剧,《渴望》、《蛙女》等,越多... 掉头发掉的太严重,理发师推荐了我凡英防脱洗发水,所以这个真的靠谱吗... 头发掉的厉害,防脱发洗发水真的靠谱吗? 朋友们帮我,我下载万能锁,怎么解不开无线网络?怎么做? 为什么我的万能钥匙记不住热点呢?每次都要重新解锁一次! 有谁知道我万能锁怎么下载呀? 为什么我的万能钥匙解不了人家的密码? 我用wifi万能锁别用数据用我自己家的wifi可以破别人的wifi 我的万能锁匙都重新下载过了,但我的网速还是会在三十分钟左右降为O,然后很快就断线啦。为什么?怎么办 我的wifi万能钥匙打不开? 万能锁是什么 为什么我的WF万能锁匙解不开锁的 为什么我的万能钥匙解锁不了? 我的万能钥匙怎么解不了别的wifi 为什么我有万能锁匙却连不上网 我用wifi万能锁怎么就 老是连接失败? 经常用山楂干泡茶喝好吗? 山楂泡茶有什么功效啊 野山渣沏茶喝可以吗 山楂泡茶喝有什么功效 好处与坏处有哪些 生山楂可以直接泡水喝吗 小红书推荐的洗发产品真的靠谱吗? 有听过凡英公司吗?听说上过央视,洗发水也很好用呢? 梦曼洗发水好吗? 丰田凯美瑞远程启动都按那几个按钮 广丰凯美瑞停车定位功能怎设置? 请问怎么样才算抗压能力强?可有什么标准吗? 混凝土为什么以抗压强度划分强度等级? 凯美瑞的巡航定速系统怎么用? 高压法兰的抗压能力达到什么等级 谁给提供几张关于毕业生的背影,扔帽子的,简单一些,好画的 凯美瑞一键启动怎么启动,怎么熄火?如何正确使用? 混凝土强度等级是按 确定, 强度更好反映混凝土实际抗压能力 向空中扔别人帽子,真的会招来厄运吗? 分析混凝土强度等级钢筋级别、截面尺寸等因素对受弯承载力的影响 外国人庆祝时为什么要扔帽子? 矿渣水泥强度等级 斗牛士为什么要扔帽子,还一定要盖在地上? 第八代凯美瑞如何关闭Gps定位 为什么毕业要扔帽子呢…。?!有什么故事或传说么…?! 为什吗毕业的时候都要扔帽子呢?