我想查询一下SQL的like查询:
SELECT * FROM users WHERE name LIKE '%m%'
Run Code Online (Sandbox Code Playgroud)
如何在MongoDB中做同样的事情?
我like在文档中找不到运算符.
我有一个MongoDB集合,其中包含以下格式的文档:
{
"_id" : ObjectId("4e8ae86d08101908e1000001"),
"name" : ["Name"],
"zipcode" : ["2223"]
}
{
"_id" : ObjectId("4e8ae86d08101908e1000002"),
"name" : ["Another ", "Name"],
"zipcode" : ["2224"]
}
Run Code Online (Sandbox Code Playgroud)
我目前可以获得与特定数组大小匹配的文档:
db.accommodations.find({ name : { $size : 2 }})
Run Code Online (Sandbox Code Playgroud)
这正确地返回name数组中包含2个元素的文档.但是,我无法执行$gt命令返回name字段数组大小超过2的所有文档:
db.accommodations.find({ name : { $size: { $gt : 1 } }})
Run Code Online (Sandbox Code Playgroud)
如何选择name大小大于1 的数组的所有文档(最好不必修改当前数据结构)?
我一直在玩mongodb中的存储推文,每个对象看起来像这样:
{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
"following" : null,
"followers_count" : 5,
"utc_offset" : null,
"location" : "",
"profile_text_color" : "000000",
"friends_count" : 11,
"profile_link_color" : "0000ff",
"verified" : false,
"protected" : false,
"url" : null,
"contributors_enabled" : false,
"created_at" : "Sun May 30 18:47:06 +0000 2010",
"geo_enabled" : false,
"profile_sidebar_border_color" : "87bc44",
"statuses_count" : 13,
"favourites_count" : 0,
"description" : "",
"notifications" : null,
"profile_background_tile" : false,
"lang" : "en", …Run Code Online (Sandbox Code Playgroud) 假设我的收藏中有以下文件:
{
"_id":ObjectId("562e7c594c12942f08fe4192"),
"shapes":[
{
"shape":"square",
"color":"blue"
},
{
"shape":"circle",
"color":"red"
}
]
},
{
"_id":ObjectId("562e7c594c12942f08fe4193"),
"shapes":[
{
"shape":"square",
"color":"black"
},
{
"shape":"circle",
"color":"green"
}
]
}
Run Code Online (Sandbox Code Playgroud)
查询:
db.test.find({"shapes.color": "red"}, {"shapes.color": 1})
Run Code Online (Sandbox Code Playgroud)
要么
db.test.find({shapes: {"$elemMatch": {color: "red"}}}, {"shapes.color": 1})
Run Code Online (Sandbox Code Playgroud)
返回匹配的文档(文档1),但始终包含所有数组项shapes:
{ "shapes":
[
{"shape": "square", "color": "blue"},
{"shape": "circle", "color": "red"}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我想仅使用包含以下内容的数组来获取文档(文档1)color=red:
{ "shapes":
[
{"shape": "circle", "color": "red"}
]
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
在MongoDB中,是否可以使用另一个字段中的值更新字段的值?等效的SQL将是这样的:
UPDATE Person SET Name = FirstName + ' ' + LastName
Run Code Online (Sandbox Code Playgroud)
MongoDB伪代码将是:
db.person.update( {}, { $set : { name : firstName + ' ' + lastName } );
Run Code Online (Sandbox Code Playgroud) 我希望得到一张巨大的(1亿张唱片)的随机唱片mongodb.
什么是最快,最有效的方法?数据已经存在,并且没有可以生成随机数并获得随机行的字段.
有什么建议?
我想获取MongoDB集合中所有键的名称.
例如,从这个:
db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type : [] } );
db.things.insert( { hello : [] } );
Run Code Online (Sandbox Code Playgroud)
我想得到独特的钥匙:
type, egg, hello
Run Code Online (Sandbox Code Playgroud) {
name: 'book',
tags: {
words: ['abc','123'],
lat: 33,
long: 22
}
}
Run Code Online (Sandbox Code Playgroud)
假设这是一份文件.如何words从该集合中的所有文档中完全删除" "?我希望所有文件都没有" words":
{
name: 'book',
tags: {
lat: 33,
long: 22
}
}
Run Code Online (Sandbox Code Playgroud) 我如何(在MongoDB中)将来自多个集合的数据合并到一个集合中?
我可以使用map-reduce吗?如果是,那么如何?
我非常感谢一些例子,因为我是新手.
使用嵌套对象表示法查询mongoDB时遇到问题:
db.messages.find( { headers : { From: "reservations@marriott.com" } } ).count()
0
db.messages.find( { 'headers.From': "reservations@marriott.com" } ).count()
5
Run Code Online (Sandbox Code Playgroud)
我看不出我做错了什么.我期望嵌套对象表示法返回与点表示法查询相同的结果.我哪里错了?