当前位置: 首页 > 编程笔记 >

用MongoDB查询数组元素?

周飞语
2023-03-14
本文向大家介绍用MongoDB查询数组元素?,包括了用MongoDB查询数组元素?的使用技巧和注意事项,需要的朋友参考一下

查询数组元素时,MongoDB更好。让我们使用以下语法查询数组元素-

db.yourCollectionName.find({yourArrayFieldName:"yourValue"}).pretty();

上面的语法将返回所有在数组字段中具有“ yourValue”值的文档。

为了理解这个概念,让我们用文档创建一个集合。使用文档创建集合的查询如下-

> db.queryArrayElementsDemo.insertOne({
   ... "StudentName":"John","StudentFavouriteSubject":["C","Java"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90c0354afe5c1d2279d694")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"Carol","StudentFavouriteSubject":["C","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90c0434afe5c1d2279d695")
}
> db.queryArrayElementsDemo.insertOne({ "StudentName":"David","StudentFavouriteSubject":["MongoDB","Java"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90c0584afe5c1d2279d696")
}

find()method的帮助下显示集合中的所有文档。查询如下-

> db.queryArrayElementsDemo.find().pretty();

以下是输出-

{
   "_id" : ObjectId("5c90c0354afe5c1d2279d694"),
   "StudentName" : "John",
   "StudentFavouriteSubject" : [
      "C",
      "Java"
   ]
}
{
   "_id" : ObjectId("5c90c0434afe5c1d2279d695"),
   "StudentName" : "Carol",
   "StudentFavouriteSubject" : [
      "C",
      "C++"
   ]
}
{
   "_id" : ObjectId("5c90c0584afe5c1d2279d696"),
   "StudentName" : "David",
   "StudentFavouriteSubject" : [
      "MongoDB",
      "Java"
   ]
}

使用MongoDB查询数组元素-

> db.queryArrayElementsDemo.find({StudentFavouriteSubject:"Java"}).pretty();

以下是输出-

{
   "_id" : ObjectId("5c90c0354afe5c1d2279d694"),
   "StudentName" : "John",
   "StudentFavouriteSubject" : [
      "C",
      "Java"
   ]
}
{
   "_id" : ObjectId("5c90c0584afe5c1d2279d696"),
   "StudentName" : "David",
   "StudentFavouriteSubject" : [
      "MongoDB",
      "Java"
   ]
}

查看上面的示例输出,上面的查询返回所有带有“ Java”值的文档。

 类似资料:
  • 本文向大家介绍用MongoDB子元素查询?,包括了用MongoDB子元素查询?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用位置运算符$。首先让我们创建一个包含文档的集合- 以下是在方法的帮助下显示集合中所有文档的查询- 这将产生以下输出- 这是在MongoDB中查询子元素的方法- 这将产生以下输出-

  • 我问了这个问题作为对另一个问题的评论,也在mongodb-user上发布了一个问题。到目前为止没有回复,所以我求助于问一个单独的问题。 文件说明: 如果字段包含一个数组,则$in操作符选择其字段包含数组的文档,该数组至少包含一个与指定数组中的值匹配的元素(例如,等等) 我正在使用: 在MongoDB外壳中: 下面是应根据文档及其生成的结果工作的查询列表: 为什么这个不行? 为什么我需要所有的钱?

  • 问题内容: 我正在尝试通过查询元数据字段来获取GridFS文件列表。例如,我得到了一个GridFS文件文档,看起来像: 我想查询所有包含“ target_field” =“ abcdefg”的文件。我创建查询如下: 该列表始​​终为空。否则,查询文件名或uploadDate的效果很好。是否可以通过嵌套属性获取GridFS文件? 问题答案: 不幸的是,我没有让它与嵌套的BasicDBObjects一

  • 问题内容: 我是MongoDB的新手。我的样本文件是 我正在尝试更新其通知。我执行此操作的Java代码是: 它不会搜索其文件为。 问题答案: 在这种情况下,您有一个嵌套的文档。您的文档具有一个字段,该字段是一个数组,其中存储有多个子对象。要在子字段中进行搜索,您需要使用点语法: 但是,这将返回整个文档和整个数组。您可能只需要子文档。要对此进行过滤,您需要使用Collection.find的两个参数

  • 本文向大家介绍MongoDB查询以使用FindAndUpdate()更新数组?,包括了MongoDB查询以使用FindAndUpdate()更新数组?的使用技巧和注意事项,需要的朋友参考一下 要更新数组,请在MongoDB中使用findAndModify()。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是更新数组的查询- 在find()

  • 在使用Mongoose查询数组时,我很难得到我期望看到的内容。一个用户可以有许多与他/她的帐户相关联的房间。room对象存储在集合中附加到用户的数组中。只有一个集合叫做Users。 请考虑以下user和Room的两个架构: 我还应该指出,数据库是填充的,因为我可以看到RoboMongo中的数组(在创建用户帐户时创建了1个元素)。 正在填充从控制台输出到show database的示例数据(包括us