我试图从这样的bash shell启动搜索。
root@mongo01:~# mongo mydb --quiet --shell --eval "printjson(db.userContests.find({linkId: {$ne: null}}, {linkId: 1}).pretty())"
type "help" for help
2015-02-23T14:45:09.256+0100 SyntaxError: Unexpected token :
如您所见,我收到错误。
但是,从mongo shell启动它也可以。
root@axn-mongo01:~# mongo mydb
MongoDB shell version: 2.6.7
connecting to: mydb
> db.userContests.find({linkId: {$ne: null}}, {linkId: 1}).pretty()
{
"linkId" : "_guid_F5BDEJFk2hvxyamKIVePEw==",
"_id" : ObjectId("546dc5e47d479b1d0d8b45aa")
}
{
"linkId" : "_guid_F5BDEJFk2hvxyamKIVePEw==",
"_id" : ObjectId("546debdf7d479b686f8b458d")
}
{
"linkId" : "_guid_EcWY0_RmDs8wA2T9LuVAGtiDfUHf8i-jLxTrhDXjzo8=",
"_id" : ObjectId("546df6237d479b62698b45be")
有人知道发生了什么?感谢。
答案 0 :(得分:1)
美元符号$
正由您的shell进行插值,您可以看到使用echo进行的操作:
echo mongo mydb --quiet --shell --eval "printjson(db.userContests.find({linkId: {$ne: null}}, {linkId: 1}).pretty())"
mongo mydb --quiet --shell --eval printjson(db.userContests.find({linkId: {: null}}, {linkId: 1}).pretty())
正如您所看到的,您的shell正在解析$ne
,这是未设置的,因此会生成无效的语法。
要修复它,请使用单引号:
mongo mydb --quiet --shell --eval 'printjson(db.userContests.find({linkId: {$ne: null}}, {linkId: 1}).pretty())'
答案 1 :(得分:0)
我用过这个并完美地工作:
mongo -pSomePassword -u SomeUserName localhost:27017/test <<< 'db.nameofcollection.find({nameofcolumn: {$exists: true}}).pretty()'
感谢您发布此答案 - 对我来说是一个救生员。